【发布时间】:2011-12-05 11:08:50
【问题描述】:
我有一个函数 f(),它有一些命名参数。它调用一个函数 g(),我想将所有 f 的参数传递给它。这可能吗?
使用 ... 只是涵盖了额外的参数:
f=function(a,callback,b,c,d,...){
z=a-b
callback(z,...)
}
g=function(z,...){
print(list(...)) #Only shows $e
print(z) #-1
print(a,b,c,d) #'a' not found
}
f(1,g,2,3,d=4,e=5);
我认为formals() 是答案,但它似乎只是参数名称,而不是它们的值!
f=function(a,callback,b,c,d,...){
z=a-b
callback(z,formals())
}
g=function(z,...){
args=list(...)[[1]]
print(args$a) #(no output)
print(class(args$a)) #"name"
}
f(1,g,2,3,d=4,e=5);
有可能吗?谢谢。
【问题讨论】:
-
查看
lm和glm的代码以了解这是如何完成的。 -
@HongOoi 谢谢;它是通过 match.call 完成的(即就像 Anton 的回答一样),尽管 IIUC 它选择只传递某些参数,而不是全部。
标签: r