我不确定是否可能,但我希望能够获取函数的默认参数值并测试它们以及我的函数中的代码,而不必删除逗号(这在当有很多参数时的情况)。
实际上,我希望在将参数发送到函数中时能够有逗号,但如果我复制并粘贴参数并自行运行它们,则不会有这些逗号。
例如:
foo=function(
x=1,
y=2,
z=3
) {
bar(x,y,z)
}
现在要测试代码块之外的函数片段,复制并粘贴
x=1,
y=2,
z=3
bar(x,y,z)
但这会产生错误,因为 x=1
后面有一个逗号
也许我没有问正确的问题。如果这很奇怪,那么调试功能的首选方法是什么?
请注意,刚刚发布了近identical question in Julia .
最佳答案
如果您想以编程方式获取函数的参数及其默认值,可以使用formals
:
fxn = function(a, b, d = 2) {}
formals(fxn)
# $a
#
#
# $b
#
#
# $d
# [1] 2
我想,如果您想将函数的每个参数的默认值存储到该名称的变量中(这就是您在OP中询问的内容),那么您可以使用 for 来执行此操作
循环:
info <- formals(fxn)
for (varname in names(info)) {
assign(varname, info[[varname]])
}
a
# Error: argument "a" is missing, with no default
b
# Error: argument "b" is missing, with no default
d
# [1] 2
因此,对于没有默认值的参数,您需要在运行此代码后提供一个值(如您所期望的)。对于具有默认值的参数,现在将对其进行设置。
关于R:交互式 session 中的测试功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22963956/