繁体   English   中英

R-区分参数值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM