您好我想将一个参数列表传递给我的main函数以使用两个子函数。
f<-function(a,...){
x1<-f1(...)
x2<-f2(...)
}
假设f1使用名称&#34; a&#34;和f2采用名称&#34; a&#34;。我怎么解决这个问题。名称&#34; a&#34;在主函数和两个子函数中使用。我想区分什么名字&#34; a&#34;是为了不同的功能,但这似乎是一项非常艰巨的任务。
我可以举一个更具体的例子
f<-function(x,...){
print(mean(x))
x1<-dnorm(...)
x2<-dbinom(...)
}
显然,dnorm和dbinom使用名称&#34; x&#34;作为输入。但是,我想为每个子函数使用不同的x值。此外,我想使用名称&#34; x&#34;在main函数里面计算它的意思是因为main x是一个向量。
答案 0 :(得分:0)
由于它们具有相同的名称,因此您需要某种方式来区分它们,否则它们只会发生冲突,正如您所指出的那样。除此之外,真的没什么魔力:你已经发现了这个问题。
您还需要一种方法来保存dbinom
- dnorm
中的特定参数,因为如果您给dnorm
参数size
会抛出错误,例如。
您可以写出所有相关的参数,例如:
f<-function(x,dnx, mean=0, sd=1, dnlog=FALSE, dbx, size, prob, dblog=FALSE, ...){
print(mean(x))
x1<-dnorm(x=dnx, mean, sd, log=dnlog)
x2<-dbinom(x=dbx, size, prob, log=dblog)
}
或以列表形式提供它们:
f<-function(x,
dn_args=list(x=0, mean = 0, sd = 1, log = FALSE),
db_args=list(x=5, size=10, prob=0.5, log = FALSE), ...){
print(mean(x))
x1<-do.call(dnorm, dn_args)
x2<-do.call(dbinom, db_args)
}
您还可以考虑是否需要将函数重构为较小的部分。 :)