2015-05-21 5 views
15

मैं एक फार्माकोडायनामिक विश्लेषण के लिए आर का उपयोग कर रहा हूं और मैं प्रोग्रामिंग के लिए बिल्कुल नया हूं।एक फ़ाइल में सारांश (एलएम) को कैसे सहेजना है?

बात यह है कि, मैं रैखिक प्रतिगमन विश्लेषण कर रहा हूं और भविष्य में मैं और अधिक उन्नत तरीकों का प्रदर्शन करूंगा। क्योंकि मैं बड़ी संख्या में विश्लेषण कर रहा हूं (और जब भी मैं स्क्रिप्ट चलाता हूं, मैं मैन्युअल रूप से पेस्ट कॉपी करने के लिए बहुत आलसी हूं), मैं विश्लेषण के सारांश को फ़ाइल में सहेजना चाहता हूं। मैंने विभिन्न तरीकों की कोशिश की है, लेकिन कुछ भी काम नहीं करता है।

क्या मैं के लिए देख रहा हूँ के रूप में निम्नलिखित (अधिमानतः) एक पाठ फ़ाइल है:

X_Y <- lm(X ~ Y) 
sum1 <- summary(X_Y) 

> sum1 

Call: 
lm(formula = AUC_cumulative ~ LVEF) 

Residuals: 
    Min  1Q Median  3Q  Max 
-910.59 -434.11 -89.17 349.39 2836.81 

Coefficients: 
      Estimate Std. Error t value Pr(>|t|)  
(Intercept) 1496.4215 396.5186 3.774 0.000268 *** 
LVEF   0.8243  7.3265 0.113 0.910640  
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 619.9 on 104 degrees of freedom 
    (32 observations deleted due to missingness) 
Multiple R-squared: 0.0001217, Adjusted R-squared: -0.009493 
F-statistic: 0.01266 on 1 and 104 DF, p-value: 0.9106 

मैं तरीकों एक .csv या .txt करने के लिए सारांश कार्यों को बचाने के लिए खोज की है, लेकिन उन फ़ाइलों को डॉन डेटा को इस तरीके से प्रस्तुत नहीं करता कि मैं इसे समझ सकता हूं।

बातें मैं कोशिश की है:

fileConn <- file("output.txt") 
writeLines(sum1, fileConn) 
close(fileConn) 

यह रिटर्न:

Error in writeLines(sum1, fileConn) : invalid 'text' argument 

write.table आदेश का उपयोग का प्रयास दिया:

> write.table(Sum1, 'output.csv', sep=",", row.names=FALSE, col.names=TRUE, quote=FALSE) 
Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) : cannot coerce class ""summary.lm"" to a data.frame 

लिखने आदेश का उपयोग करना:

> write(sum1, 'output.txt') 
Error in cat(list(...), file, sep, fill, labels, append) : argument 1 (type 'list') cannot be handled by 'cat' 
012 ,

> write.table(sum1, 'output.csv', sep=",", row.names=FALSE, col.names=TRUE, quote=FALSE) 

लेकिन इस फ़ाइल मुद्रित सारांश

मुझे आशा है कि किसी की मदद कर सकते हैं के रूप में ही पढ़ने योग्य जानकारी नहीं है, क्योंकि इस उन्नत प्रोग्रामिंग करने के लिए तरीका है:

तो मैं निम्नलिखित के साथ घनिष्ठ हो रही थी मेरे लिए।

+1

आप 'capture.output' यानी कोशिश कर सकते हैं। 'capture.output (sum1, 'output.txt')' – akrun

+2

मैं knitr का उपयोग करने का सुझाव दूंगा। यदि आप RStudio का उपयोग करते हैं तो यह वास्तव में आसान है। – Roland

+0

आप आर में अंतर्निहित कार्यों के गन्दा आउटपुट को कन्वर्ट करने के लिए [** ब्रूम **] (http://cran.r-project.org/web/packages/broom/vignettes/broom.html) देख सकते हैं, जैसे कि एलएम [..] और उन्हें साफ डेटा फ्रेम में बदल देता है "। – Henrik

उत्तर

26

मुझे लगता है कि एक विकल्प sink() हो सकता है जो परिणाम को कंसोल की बजाय टेक्स्ट फ़ाइल में आउटपुट करेगा। आपके डेटासेट के अभाव में मैं एक उदाहरण के लिए cars उपयोग किया है:

sink("lm.txt") 
print(summary(lm(cars$speed ~ cars$dist))) 
sink() # returns output to the console 

lm.txt अब इस तरह दिखता है:

Call: 
lm(formula = cars$speed ~ cars$dist) 

Residuals: 
    Min  1Q Median  3Q  Max 
-7.5293 -2.1550 0.3615 2.4377 6.4179 

Coefficients: 
      Estimate Std. Error t value Pr(>|t|)  
(Intercept) 8.28391 0.87438 9.474 1.44e-12 *** 
cars$dist 0.16557 0.01749 9.464 1.49e-12 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 3.156 on 48 degrees of freedom 
Multiple R-squared: 0.6511, Adjusted R-squared: 0.6438 
F-statistic: 89.57 on 1 and 48 DF, p-value: 1.49e-12 

@Roland के knitr के सुझाव थोड़ा और अधिक शामिल है, लेकिन कर सकते थे इसके लायक बनें क्योंकि आप एक रिपोर्ट या एचटीएमएल फ़ाइल में आसानी से इनपुट, टेक्स्ट आउटपुट और आंकड़े बुना सकते हैं।

+0

हमेशा एक खुशी। पिछले टिप्पणीकर्ता के सुझावों के मुताबिक, आपको 'बुनाई' और 'झाड़ू' में देखना चाहिए: वे थोड़ा अधिक शामिल हैं लेकिन 'सिंक' से अधिक परिष्कृत हैं। शुभकामनाएं – Phil

+0

हैलो, यह वही तरीका है जो मैंने किया था। हालांकि, महत्व क्षुद्रग्रहों (***) के आसपास apostrophs txt फ़ाइल में डिक्रिप्ट प्रस्तुत किए जाते हैं। क्या हल करने का कोई तरीका है? – Rockbar

+0

@ रॉकबार मैं इस से लिंक करने वाला एक नया प्रश्न शुरू करूंगा। आपका मतलब क्या है इसका एक उदाहरण पोस्ट करने का प्रयास करें; मुझे नहीं पता कि डिक्रिप्ट द्वारा आपका क्या मतलब है? – Phil

2

आप पुन: आयात आर में डेटा करवाना चाहते हैं, लेकिन अभी भी एक पाठ फ़ाइल में यह करना चाहते हैं, वहाँ भी dput है, जैसे,

dput(summary(lm(cars$speed~cars$dist)),file="summary_lm.txt",control="all") 

इस पर पुन: आयात सारांश वस्तु के माध्यम से की अनुमति देता है

res=dget("summary_lm.txt") 

के डब्ल्यू ऊपर सुझाव res

class(res) 
[1] "summary.lm" 
0

के वर्ग जाँच करें ओर्क महान। आपको जो चाहिए वह निर्भर करता है कि आप तालिका के लिए गुणांक और नज़र() के लिए tidy() फ़ंक्शन का उपयोग कर सकते हैं।

library(broom) 
a <- lm(cars$speed ~ cars$dist) 
write.csv(tidy(a) , "coefs.csv") 
write.csv(glance(a) , "an.csv") 
संबंधित मुद्दे