Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将控制台输出tee/split/copy到R中的变量中?_R - Fatal编程技术网

如何将控制台输出tee/split/copy到R中的变量中?

如何将控制台输出tee/split/copy到R中的变量中?,r,R,如何将特定代码的输出放入变量中?我希望该输出仍能转到控制台 我更喜欢sink符号;我不想使用capture.output,原因有二: 它要求各个代码是单个函数;我不想通过创建函数来捕获输出,从而使代码复杂化 它不允许捕获的输出仍然进入控制台 我想出了下面的代码,但有点复杂。有更简单的解决办法吗 fileName <- tempfile() sink(fileName, split = TRUE) ... sink() out <- readChar(fileName, file.in

如何将特定代码的输出放入变量中?我希望该输出仍能转到控制台

我更喜欢
sink
符号;我不想使用
capture.output
,原因有二:

  • 它要求各个代码是单个函数;我不想通过创建函数来捕获输出,从而使代码复杂化
  • 它不允许捕获的输出仍然进入控制台
  • 我想出了下面的代码,但有点复杂。有更简单的解决办法吗

    fileName <- tempfile()
    sink(fileName, split = TRUE)
    ...
    sink()
    out <- readChar(fileName, file.info(fileName)$size)
    unlink(fileName)
    

    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
    

    可以使用
    %%>%%
    (magrittr)或
    %%>%%
    (pipeR)将发送到控制台的内容复制到后续的
    写入操作?或者这是您在
    magrittr
    之前发布
    %tee%
    运算符:-)的机会。请看,您应该只使用
    futile.logger
    它做所有事情,外加额外的功能
    results <- capture.output(split=TRUE,{
       print("hello")
       print("goodbye")
    })