आर

2012-03-11 36 views
8

में ftable ऑब्जेक्ट से लेटेक्स तालिका बनाना, मुझे अपने प्रश्न पूछने से पहले कुछ डेटा बनाने दें।आर

my.data <- data.frame(A = sample(seq(1,100,by=5),10,replace=TRUE),W = rnorm(10),X =sample(1:10),Y = sample(c("yes", "no"), 10, replace = TRUE),Z=sample(c('a','b','c','d'),10,replace=TRUE)) 

attach(my.data) 

my.d <- xtabs(W~Z+Y+A);my.d 
table.data <- ftable(my.d) 

result1 <- round(table.data,2) 

result1 लग रहा है .. जैसे

 A  6 11 16 26 71 76 86 91 
Z Y              
a no  0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 
yes 0.00 0.56 0.00 0.00 0.00 0.79 0.00 0.01 

b no  0.61 0.00 -0.22 0.14 0.00 0.00 -0.08 1.71 
    yes 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 

c no  0.00 0.00 0.00 0.00 -0.08 0.00 0.00 0.00 
    yes 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 

d no  0.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00 
    yes 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 

मैं वास्तव में पैकेज knitr का उपयोग कर एक लेख लिख रहा हूँ। क्या मेरी * .rnw फ़ाइल का अनुपालन होने पर परिणाम 1 को लेटेक्स तालिका में बदलने का कोई तरीका है?

मैं xtable साथ की कोशिश की लेकिन निम्न त्रुटि मिल गया ...

Error in UseMethod("xtable") : no applicable method for 'xtable' applied to an object of class "ftable" 

धन्यवाद @DWin और @Yihui। इसके अलावा लेटेक्स() से, मैं भी xtable के रूप में कहा गया है इस्तेमाल किया

तहत

print(xtable(ftable2data.frame(result1))) 
अनावश्यक पंक्ति नाम निकालने के लिए मैंने किया था निम्नलिखित

print(xtable(ftable2data.frame(result1)),include.rownames=FALSE) 

उत्तर

4

विधि 1:

require(MIfuns) 
require(Hmisc) 
latex(ftable2data.frame(result1)) 
+0

लेटेक्स (ftable2data।फ्रेम (परिणाम 1)) प्रतिक्रिया नहीं दे रहा है @ DWin –

+0

आप लाटेक्स सेटअप का समर्थन करते हुए मेरे से अलग हो सकते हैं। –

+1

मुझे लगता है कि आपको तकनीकी फ़ाइल को स्वचालित रूप से संकलित करने से 'लेटेक्स()' को रोकने की आवश्यकता है (डिफ़ॉल्ट रूप से): 'लेटेक्स (ftable2data.frame (result1), file =' ')' का उपयोग करें; खंड विकल्प 'परिणाम = asis' या' परिणाम = tex' –

5

एक विकल्प के रूप में, memisc ftable वस्तुओं के लिए लेटेक्स विधियों प्रदान करता है।

library(xtable) 
mytable=ftable(mydata) 
print(
    xtable(format(mytable)),file="~/Desktop/mytable.tex" 
) 

मैं नहीं जानता कि यह कैसे दी अन्य की तुलना में कैसा:

library(memisc) 
toLatex(result1) 
0

simsalapar पैकेज द्वारा प्रदत्त toLatex() फ़ंक्शन का उपयोग करें।

library(simsalapar) 
toLatex(result1) 
1

user2030503 के जवाब का निर्माण बंद,

# install.packages('simsalapar') 
library(simsalapar) 
utils::toLatex(result1) 

समारोह toLatex एक S3 सामान्य तो simsalapar:::toLatex.ftable() के पास रहता है जब एक ftable वस्तु दी है। वैकल्पिक रूप से आप केवल simsalapar:::toLatex.ftable(result1) कर सकते हैं।

एक बार ऐसा करने के बाद मुझे \usepackage{booktabs} लेटेक्स प्रस्तावना में toLatex.ftable\toprule का उपयोग करने की आवश्यकता है। वैकल्पिक रूप से आप booktabs=FALSE पास कर सकते हैं।

यह toLatex.ftable पीछे की ओर शून्यों को ट्रिम करता है। यह मैं क्या किया है कि ठीक करने के लिए (format() के लिए Formatting Decimal places in R का जवाब देखें):

result1[1:nrow(result1),1:ncol(result1)] %<>% as.numeric %>% format(nsmall=2,digits=3) 

यह एक चरित्र मैट्रिक्स को ftable की मैट्रिक्स बदलता है, लेकिन अभी भी toLatex.ftable काम करता है।

मुझे \usepackage{pdflscape} पर भी मदद मिली और \begin{landscape} और \end{landscape} के साथ मेरी तालिका को लपेटें क्योंकि ये आकस्मिक तालिकाएं काफी व्यापक हो सकती हैं।