簡體   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