【发布时间】:2013-08-15 15:54:59
【问题描述】:
我正在寻找一个简单的函数来提高我编写和调试 R 函数的能力。考虑以下代码块:
# Part A:
myfun = function(a, b = 5, out = "hello"){
if(a>b) print(out)
return(a-b)
}
# Part B:
b = 5
out = "hello"
# Part C:
do.args = function(f){
#intialize the arguments of myfun in the parent environment
???
}
函数myfun 是一个更大问题的小例子:我经常有一个带有很多参数的复杂函数。为了有效地编写和调试这样的函数,我发现初始化函数的参数并逐行“逐步执行”函数很有用。初始化参数,如上面的 B 部分,有点麻烦,当有很多参数时,我希望有一个像 C 部分那样的函数,它只接受字符串 myfun 作为它的参数并产生相同的在当前环境下运行 Part B 的效果。
【问题讨论】:
-
你应该使用 source()-ing 代码而不是使用函数来构建参数。
-
@DWin,将 B 部分放入一个单独的文件中,然后使用 source()-ing 这是一个好主意,并且会简化一些事情。但似乎仍然应该有一种方法可以避免写下 B 部分中的行。
-
我通常使用 RStudio 进行复制和粘贴,然后将所有逗号替换为分号。当然,您可以使用 word 或其他允许您查找和替换的文本处理器。然后,您可以轻松地获取一行。