-1

假设我们正在调试一个函数foo(),并且我们想一次又一次地修改它并使用一些参数运行它foo(bar="Hello", baz="How are you?")——以确保问题得到解决。

修改foo()主体后,我们运行函数定义的行——以修改函数——现在,我们必须在历史记录中搜索包含的行foo(bar="Hello", baz="How are you?")以查看修改后的foo()工作是否正常。搜索历史也可以通过继续按“向上”键直到到达函数定义之前,也就是我们最后一次运行的时候来代替foo(bar="Hello", baz="How are you?")

另一种可能性是保留foo(bar="Hello", baz="How are you?")在剪贴板中,每次修改foo()正文时,我们只需foo(bar="Hello", baz="How are you?")从剪贴板粘贴并运行它。

但是,如果我们同时修改多个具有长体的函数,那么所有这些解决方案都非常困难。我教过的最好的方法是从历史中隐藏函数定义——当我们使用原生 R 环境或像 RStudio 这样的 IDE 时。有没有可能做到这一点?有没有更好的解决方案?

4

1 回答 1

4

您可以source()从文件中定义函数,而不是从 IDE/编辑器“复制粘贴”(或以其他方式运行)函数代码块。如果您这样做(默认情况下无论如何),采购将不会显示在 R 控制台中。source()大多数合理的编辑器都有一个键盘快捷键,可以通过“粘贴”将函数缓冲区/文件/窗口源/加载到 R中C-例如c C,在 Emacs+ESS 上。l

您可以使用像 Emacs 这样的明智编辑器和 ESS,它不会将代码缓冲区发送的代码交错到 R 缓冲区中,因此您不必从函数定义中重新返回,只需返回历史记录即可。

至少在 Linux 上,您可以使用通用Ctrl+r然后开始输入您想要的函数调用的前几个字符,这将对您正在输入的内容进行反向搜索,然后Enter运行该命令/行。

于 2012-11-08T09:54:19.303 回答