如何将某些代码的输出放入变量中?我希望该输出仍然发送到控制台。
我更喜欢sink
符号;我不想使用capture.output
有两个原因:
- 它要求相应的代码是单个函数;我不想通过创建函数来捕获输出来使我的代码复杂化
- 它不允许捕获的输出仍然进入控制台。
我想出了下面的代码,但有点复杂。有更简单的解决方案吗?
fileName <- tempfile()
sink(fileName, split = TRUE)
...
sink()
out <- readChar(fileName, file.info(fileName)$size)
unlink(fileName)
您的代码看起来并没有那么糟糕,但是您可以通过使用来简化一些事情textConnection
:
sink(tt <- textConnection("results","w"),split=TRUE)
print(11:15)
## [1] 11 12 13 14 15
sink()
results
## [1] "[1] 11 12 13 14 15"
close(tt) ## clean up
唯一需要注意的是,如果你不关闭连接,results
将会有锁定绑定 (see ?textConnection
),这意味着你不能,例如为其分配一个新值。
输出字符向量已锁定绑定(请参阅“lockBinding”),直到在连接上调用“close”为止。
或者,您不必将多个语句包装到一个函数中以将它们放入capture.output()
- 您可以使用大括号{}
将多个语句生成单个评估输出...
results <- capture.output(split=TRUE,{
print("hello")
print("goodbye")
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)