【问题标题】:Automatically "sourcing" function on change更改时自动“采购”功能
【发布时间】:2011-03-30 20:11:31
【问题描述】:

在编写 .R 函数时,我经常需要手动编写 source("funcname.r") 以使更改反映在工作区中。我确信必须可以自动执行此操作。所以我想要的只是对我的函数进行更改,保存函数并能够在 R 工作区中使用新函数,而无需手动“采购”这个函数。我该怎么做?

更新:我知道在 R 编辑器 (RGui) 中选择适当的代码行并按 CTRL+R 或使用 Notepad++ 并将这些行执行到 R 中。但是这种方法的缺点是使我的工作区控制台“混乱”。如果可能的话,我想停止这种做法。

【问题讨论】:

  • 您可能会考虑使用 IDE,例如带有 ESS 的 Emacs,或者在脚本文件中写入这一行并使用 CTRL-R 发送到基本 Rgui 中的控制台。还是我误解了你的问题?您能告诉我们您使用什么平台和程序来编写和评估您的脚本吗?
  • 我更新了我最初的问题,请看一下。

标签: r


【解决方案1】:

您可以使用R studio,它有一个源保存选项。

【讨论】:

  • 我赞成这个回复,因为这是我目前使用的方法。
【解决方案2】:

如果您准备将您的函数打包到一个包中,您可能会喜欢探索 Hadley 的 devtools 包。这提供了一套工具来编写、测试和记录 包。

https://github.com/hadley/devtools

这种方法有很多优点,但主要是通过最少的重新输入来重新加载包。

您仍然需要输入 load_all("yourpackage") 但我发现与 devtools 的优势相比,这少量的输入是小啤酒。

如需了解更多信息,包括如何设置开发工具,请查看https://github.com/hadley/devtools/wiki/development

【讨论】:

    【解决方案3】:

    如果您使用的是 Eclipse + StatET,您可以按 CTRL+R+S,这会保存您的脚本并获取它。尽可能接近自动。

    【讨论】:

      【解决方案4】:

      如果您可以让您的文本编辑器在保存文件后运行系统命令,那么您可以使用 AutoIt(在 Windows 上)或批处理脚本(在 UNIX 衍生版本上)将调用源传递给所有正在运行的 R 副本。但那是一大堆工作,却没有多少收获。

      不过,我认为它更有可能在文本编辑器端由事件驱动而不是让 R 不断扫描更新(或以某种方式与操作系统的 update-event-messaging-system 交互)。

      【讨论】:

        【解决方案5】:

        这可能是不可能的(无需干预或运行至少一行即可自动检测光盘更换)。

        R 需要读入内存函数,因此如果不重新加载函数,磁盘上的更改不会反映在工作区中。

        如果您正在开发 R 函数,那么在您的开发过程中可能会不可避免地出现一些混乱,但也许我可以建议您尝试编写一个 R 包来容纳您的函数?

        这样做的好处是能够健壮地记录您的函数,使用延迟加载,这样您就可以立即访问您的函数/数据集而无需采购它们。

        不要害怕制作包,使用 package.skeleton() 很容易,并且不必在 CRAN 上进行,但可以供您个人使用而无需分发!玩得开心!

        在开发过程中尝试接受一些混乱,知道您正在朝着自己的目标努力并与代码组织和文档的良好斗争!

        在一个不完美的世界里,我们只是不完美的人,但我们的意思是好的!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-05-12
          • 1970-01-01
          • 2021-04-19
          • 2015-02-01
          • 1970-01-01
          • 2017-10-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多