1

我有一个很长的脚本 R,它绘制了非常复杂的数据。我只使用绘图来直观地了解我在做什么,但我可以在没有绘图的情况下计算结果,显然不绘制任何东西会使事情变得更快。然而,有时我仍然需要可视化程序所做的工作以继续调试它。

为了实现这个绘图“开或关”开关,我遵循这个策略。

对于具有与脚本的绘图功能相关的命令的每一行,我#toplot在每个相关行的末尾都有一个特定的注释标记。使用正则表达式替换的力量,我然后使用以下命令注释/取消注释这些行。

示例代码:

a <- c(1:10)
b <- a/sin(a)
png('sin.png') #toplot
plot(b)        #toplot
dev.off()      #toplot
print(b)

要评论“标记”行:

  :%s/.\+#toplot/###commline###\0/g

我明白了:

a <- c(1:10)
b <- a/sin(a)
###commline###    png('sin.png') #toplot
###commline###    plot(b)        #toplot
###commline###    dev.off()      #toplot
print(b)

要取消注释:

  :%s/###commline###//g

我明白了:

a <- c(1:10)
b <- a/sin(a)
png('sin.png') #toplot
plot(b)        #toplot
dev.off()      #toplot
print(b)

我不是计算机科学家,所以我不知道是否有更好、更优雅的方式来执行这些操作。

编辑:重要的是要提到,为了绘制我的数据,我需要经过多轮计算和转换,以便不同类型的数据适合绘图设备。为了执行这些操作,我使用历史记录,我根据需要上下移动。

4

2 回答 2

1

你的方法对我来说很好。

如果您可以想出一个捕获所有与绘图相关的行的正则表达式,您可以取消#toplot标记,并让注释替换直接对其进行处理。

您没有提及是否重新输入替换或使用历史记录。我肯定会为此定义一个缓冲区本地命令(和/或映射):

autocmd FileType r command! -buffer Comment %s/.\+#toplot/###commline###\0/g
autocmd FileType r command! -buffer Uncomment %s/###commline###//g

(或放入:commands!~/.vim/ftplugin/r_commands.vim

如果您正确定义了文件类型的'comments'设置(例如 add b:###commline###)和'commentstring',您还可以使用通用评论插件之一(例如The NERD Commenter),它提供了很好的映射来打开/关闭评论。

于 2012-11-28T10:25:01.293 回答
0

这没关系,但是用条件包装每个绘图命令不是更容易吗?

于 2012-11-28T10:17:13.510 回答