当使用capture.output(..., file = NULL)
后跟您想要捕获的行的规范时,只捕获该行:
capture.output(summary(lm(speed ~ dist, data = cars)), file = NULL)[5]
[1] "Residuals:"
但是当指定文件名时,它将捕获整个对象:
capture.output(summary(lm(speed ~ dist, data = cars)), file = "Results.txt")[5]
NULL
Results.txt
的内容:
Call:
lm(formula = speed ~ dist, data = cars)
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 ***
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
如何让R和/或capture.output
只将我想要的行写入文件(在这个玩具示例第5行中)?
答案 0 :(得分:3)
我担心你不能在capture.output()
内这样做,但你可以简单地将你想要的capture.output()
输出部分写成文件例如,cat()
cat(capture.output(summary(lm(speed ~ dist, data = cars)))[5],file="Results.txt")
答案 1 :(得分:2)
在存在文件参数时,在提取“[
”操作之前发生写入文件的副作用。因此,您需要在将值返回到控制台/全局环境后编写该值:
cat( capture.output( summary(lm(speed ~ dist, data = cars)), file = NULL)[5] ,
file="test.txt")
如果你需要反复使用它,将它包装成一个函数会很容易。