【问题标题】:Disabling output has no effect禁用输出没有效果
【发布时间】:2014-04-21 07:43:58
【问题描述】:

我注意到,在某些我不知道的情况下,一些函数,无论是来自基础R(例如,gc()),还是来自外部包(例如,来自RCurlgetCurlHandle()),即使通过verbose = FALSE 明确禁用它,仍然会产生输出。我很好奇这种行为的原因。我在 SO 上找到的唯一解决方法是建议调用 invisible(),但对我来说,它仅适用于 gc(),但不适用于 getCurlHandle()。非常感谢任何 cmets 和答案。

【问题讨论】:

    标签: r garbage-collection output rcurl verbosity


    【解决方案1】:

    命令gc(verbose=TRUE)

    1. 打印一些统计数据和百分比,
    2. AND 打印函数返回的矩阵。

    x=gc(verbose=TRUE) 命令只打印统计信息。

    gc(verbose=FALSE) 命令只打印返回的矩阵。

    命令x=gc(verbose=FALSE)什么也不打印。

    【讨论】:

    • 感谢您的回答,+1!我确认分配操作强制gc() 不打印任何内容。但同样的方法不适用于getCurlHandle() 案例。消息是:An object of class "CURLHandle"\nSlot "ref":\n<pointer: 0x2408f90>。任何想法为什么?
    • 是一样的.... 'x=getCurlHandle()' 不打印任何内容,然后 'x' 打印您提到的消息。 (因为 x 确实是类 CurlHandle' 的对象
    • 我在模块中的任何函数之外都有这一行:curl <- getCurlHandle()。它产生我上面提到的输出,无论是按原样,还是使用verbose = FALSE 参数。我以批处理模式运行代码,而不是作为交互式会话。
    • 在没有可重现的例子的情况下,我帮不了你
    • 没问题。实际上,准备一个可重现的示例帮助我弄清楚了这一点。您是对的:分配行不是该输出的来源。另一个(下一个)功能是生产它。再次感谢您的帮助。
    【解决方案2】:

    在准备一个可重现的示例时,我发现了这一点。可疑输出的来源不是getCurlHandle()。它由另一个(下一个)函数产生:curlSetOpt()。我通过使用invisible() 来禁用它的输出。

    与我为解决之前的RRCurl 问题所做的努力相比,这确实不错。但是,它总是充满乐趣和教育意义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多