Używam R do analizy farmakodynamicznej i jestem całkiem nowy w programowaniu.Jak zapisać podsumowanie (lm) do pliku?
Chodzi o to, że przeprowadzam analizę regresji liniowej, aw przyszłości będę wykonywał bardziej zaawansowane metody. Ponieważ wykonuję dużą liczbę analiz (i jestem zbyt leniwy, aby ręcznie kopiować wklej za każdym razem, gdy uruchamiam skrypt), chciałbym zapisać podsumowania analizy w pliku. Próbowałem różnych metod, ale nic nie działa.
Co szukam jest następujący jak (najlepiej) to plik tekstowy:
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
Rozglądałem metod oszczędzania funkcji podsumowania w formacie .csv lub .txt, ale te pliki don nie reprezentują danych w sposób, w jaki mogę je zrozumieć.
Czego próbowałem:
fileConn <- file("output.txt")
writeLines(sum1, fileConn)
close(fileConn)
ta zwraca:
Error in writeLines(sum1, fileConn) : invalid 'text' argument
Próba używając polecenia write.table dał:
> 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
Użycie polecenia zapisu:
> write(sum1, 'output.txt')
Error in cat(list(...), file, sep, fill, labels, append) : argument 1 (type 'list') cannot be handled by 'cat'
Potem było coraz bliżej, co następuje:
> write.table(sum1, 'output.csv', sep=",", row.names=FALSE, col.names=TRUE, quote=FALSE)
Ale ten plik nie mają tę samą informację czytelnej postaci drukowanej Podsumowując
Mam nadzieję, że ktoś może pomóc, bo to jest droga do zaawansowanego programowania dla mnie.
Możesz wypróbować '? Capture.output' ie. 'capture.output (sum1, 'output.txt')' – akrun
Proponuję użyć knitr. To bardzo proste, jeśli używasz RStudio. – Roland
Możesz sprawdzić [** broom **] (http://cran.r-project.org/web/packages/broom/vignettes/broom.html), aby przekonwertować "niechlujny wynik wbudowanych funkcji w R, takie jak lm [...] i zamienia je w czyste ramki danych ". – Henrik