给定一系列功能 B1,B2,..,B20
如何创建一个同时调用所有或部分预定义函数的函数?
我想要的是function(start=B1,end=B12)
,它会同时调用B1 TO B12
个函数。
答案 0 :(得分:1)
我建议将所有功能放在一个列表中:
B <- list(B1, B2, ..., B20)
这样你可以用另一个函数调用它们:
callB <- function(callnum, ...){
for(i in callnum){
B[[i]](...)
}
}
答案 1 :(得分:1)
您可以将任何R对象名称构造为字符串,然后get
。
> B1 = function(x){x^1}
> B2 = function(x){x^2}
> B3 = function(x){x^3}
> B4 = function(x){x^4}
> getBN = function(N){get(paste0("B",N))}
> getBN(1)
function(x){x^1}
> getBN(2)(2)
[1] 4
如果你真的想这样做我会定义你的功能:
doBs = function(start=1, end=12, prefix="B"){..stuff happens..}
并且该函数将是start:end
上的循环,构造函数名称,对其进行评估。
如果您真的想将其称为doBs(start=B1, end=B2)
,那么您需要获取通过deparse
和substitute
传递的内容的名称:
doBs = function(start=B1){first = deparse(substitute(start));first}
> doBs()
[1] "B1"
> doBs(B2)
[1] "B2"
>
然后拆分字符串并计算出开始/结束值,将所有函数名称构造为从B {start}到B {end}的字符串,然后get
将它们调用并调用它们。
或做正确的事情并将功能粘贴在列表中。