【问题标题】:How to source file.R without output如何在没有输出的情况下获取 file.R
【发布时间】:2010-11-27 21:14:40
【问题描述】:

是否可以在不打印所有图表等的情况下获取文件(已经尝试使用 echo=F)?

在我的例子中,我在脚本的早期调用了 png("filename%03d.png") 设备。评论这一点并不麻烦 - 但所有图表确实需要大量时间来呈现。 (我正在使用的特定文件现在使用基本图形 - 但大多数情况下我将使用 ggplot2 - 这使得问题更加重要(ggplot2 非常好,但在当前实现中不是最快的))

谢谢

【问题讨论】:

    标签: r


    【解决方案1】:

    这不是最好的解决方案,但如果您可能经常像这样运行此脚本,您可以声明一个布尔值是否需要图形 (graphics_required=TRUE),然后将所有绘图命令包含在 if/then 子句中您的布尔值,然后只需更改布尔值即可更改脚本的行为

    【讨论】:

    • 感谢所有回答这个问题的人。我认为布尔方法是最接近的。谢谢大家 - 特别是 PaulHurleyuk
    【解决方案2】:

    对于 ggplot2 或 lattice 图形来说,这不是问题 - 当在非交互式设置中(例如在脚本中)调用它们时,您总是必须明确地 print 它们。

    【讨论】:

    • 但是如果我有一个包含大量打印(情节)的脚本 - 有没有办法在没有打印语句的情况下获取文件?也许最好的方法是为绘图和其他数据混合使用单独的脚本。
    • 是的,定义一个布尔切换变量并决定打印/不打印。
    【解决方案3】:

    也许这会有所帮助...

    “一个提供空图形设备的包;包括一个小插图“devNull”,它记录了如何创建一个新的图形设备作为附加包。“

    来自http://developer.r-project.org/

    【讨论】:

      【解决方案4】:

      编码 R 的良好实践意味着将尽可能多的代码包装到函数中。 (例如,参见R Inferno pdf 的第 5 章。)如果将绘图代码放在函数中,则在获取它时不需要显示它。比较以下。

      文件 foo.r 包含

      plot(1:10)
      

      当您调用source('foo.r') 时,会显示该图。

      文件 bar.r 包含

      bar <- function() plot(1:20)
      

      当您调用source('bar.r') 时,不会显示该图。您可以在命令提示符下键入bar() 来方便地显示它。

      【讨论】:

      • 嗨,Richie,非常感谢您提供的链接,如果当时 R 存在,但丁会写什么:-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      • 2015-08-28
      • 2020-04-12
      • 2020-12-07
      • 1970-01-01
      相关资源
      最近更新 更多