如何将某些代码的输出汇入变量?我希望该输出仍然进入控制台。
我更喜欢sink
符号;我不想使用capture.output
有两个原因:
我想出了下面的代码,但它有点复杂。有更简单的解决方案吗?
fileName <- tempfile()
sink(fileName, split = TRUE)
...
sink()
out <- readChar(fileName, file.info(fileName)$size)
unlink(fileName)
答案 0 :(得分:1)
您的代码似乎并不那么糟糕,但您可以使用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
将有锁定绑定(请参阅?textConnection
),这意味着你不能,例如为其分配一个新值。
输出字符向量具有锁定绑定(请参阅“lockBinding”),直到在连接上调用“close”。
或者,您不必将多个语句包装到函数中以使它们进入capture.output()
- 您可以使用大括号{}
将多个语句转换为单个评估输出... < / p>
results <- capture.output(split=TRUE,{
print("hello")
print("goodbye")
})