【发布时间】:2016-07-03 08:23:28
【问题描述】:
我正在使用包中的一个函数,该函数使用system2() 在函数中运行命令。这个特定的命令将一些东西打印到标准输出。我想捕获system2() 调用的输出,但是capture.output() 不起作用。我了解如何直接运行system2() 并捕获标准输出,但不了解如何在这种特定情况下获取它。
简单示例:
my_ls <- function() {
system2("ls")
return("Hello")
}
my_ls()
output <- capture.output(my_ls())
output
【问题讨论】:
-
如有疑问
?system2。您会看到使用参数stdout = T将输出捕获为字符串。 -
my_ls的返回值将始终只是“Hello”。尝试 capture.output 是没有意义的,要么使用return() around thesystem2` 调用,要么在函数内颠倒这些命令的顺序。 -
@JeremyS 是的,我已经知道了。我的问题的重点是
system2调用在包中的函数内,我无法编辑该函数来设置stdout = T,所以我正在寻找解决方法。 -
您可以通过某种方式编辑函数。如果函数是
MyFoo,则输入MyFoo,注意没有括号,你会得到函数的R代码,复制它并进行更改并保存为新函数MyFoo2例如 -
help(stdin) 谈论“控制台”和“C 级标准输入”-
capture.output获得“控制台”输出,system2输出到“C 级标准输出” ' 我想。