我有一个非常长的脚本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)
我不是计算机科学家,所以我不知道是否有更好,更优雅的方式来执行这些操作。
编辑:重要的是要提到,为了绘制我的数据,我需要经过多轮计算和转换,以便在绘图设备中适应不同类型的数据。为了执行这些操作,我使用历史记录,根据我的需要上下移动。
答案 0 :(得分: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'
设置(例如添加b:###commline###
)和'commentstring'
,您也可以使用其中一个常规评论插件(例如{{ 3}}),它提供了很好的映射来打开/关闭注释。
答案 1 :(得分:0)
这没关系,但是用条件包装每个绘图命令是不是更容易?