【问题标题】:Hide function definitions from the history for easier debug从历史记录中隐藏函数定义以便于调试
【发布时间】:2012-10-28 11:40:41
【问题描述】:

假设我们正在调试一个函数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 时。有没有可能做到这一点?有没有更好的解决办法?

【问题讨论】:

    标签: r debugging ide rstudio


    【解决方案1】:

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

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

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

    【讨论】:

    • 在 RStudio 中,您可以使用Ctrl + up 进行反向搜索。
    猜你喜欢
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多