[英]R- distinguishing argument values
嗨,我想将参数列表传递到我的主函数中以使用两个子函数。
f<-function(a,...){
x1<-f1(...)
x2<-f2(...)
}
假设f1接受名称为“ a”的参数,f2接受名称为“ a”的参数。 我怎么解决这个问题。 在主要功能和两个子功能中使用名称“ a”。 我试图区分名称“ a”是指不同的功能,但这似乎是一项非常困难的任务。
我可以举一个更具体的例子
f<-function(x,...){
print(mean(x))
x1<-dnorm(...)
x2<-dbinom(...)
}
显然,dnorm和dbinom使用名称“ x”作为输入。 但是,我想为每个子函数使用不同的x值。 此外,我想在主函数中使用名称“ x”来计算它的意思,因为主x是向量。
由于它们具有相同的名称,因此您将需要一些区分它们的方法,否则它们将像您指出的那样发生冲突。 除此之外,实际上没有太多魔术:您已经发现了问题。
您还需要一种将dbinom
特定参数保留在dnorm
,因为dnorm
,如果给定size
参数,则dnorm
会引发错误。
您可以写出所有相关的参数,例如:
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)
}
您还可以考虑是否需要将功能重构为较小的部分。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.