gpt4 book ai didi

r - 如何将控制台输出开到/拆分/复制到R中的变量中?

转载 作者:行者123 更新时间:2023-12-04 21:41:13 25 4
gpt4 key购买 nike

如何将某些代码的输出放入变量中?我希望该输出仍然进入控制台。

我更喜欢 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将有锁定的绑定(bind)(见 ?textConnection ),这意味着你不能例如为其分配一个新值。

    The output character vector has locked bindings (see ‘lockBinding’) until ‘close’ is called on the connection.



    或者,您不必将多个语句包装到一个函数中以将它们放入 capture.output()。 - 你可以使用大括号 {}将多个语句变成单个评估输出...
    results <- capture.output(split=TRUE,{
    print("hello")
    print("goodbye")
    })

    关于r - 如何将控制台输出开到/拆分/复制到R中的变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25781458/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com