R:交互式 session 中的测试功能

标签 r function arguments

我不确定是否可能,但我希望能够获取函数的默认参数值并测试它们以及我的函数中的代码,而不必删除逗号(这在当有很多参数时的情况)。

实际上,我希望在将参数发送到函数中时能够有逗号,但如果我复制并粘贴参数并自行运行它们,则不会有这些逗号。

例如:

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/

相关文章:

matlab - 如何从函数句柄中获取函数子集,函数句柄是 Matlab 中的函数向量

C++如何将函数连接到程序?

c# - MVC 4 的 BeginForm 重载中的命名参数

使用 fread() 和 grep 将 csv 文件从 HDFS 读取到 R ——丢失的列名

r - 通过奇异值分解求解普通最小二乘的Toy R函数

r - 适合许多 glm 模型 : improve speed

c++ - 假设引用作为指针传递是否有效

r - igraph R中从根到叶的有向 TreeMap 中的所有路径

c++ - 多个函数和返回值的问题

c - 指针上的 sizeof