在R中的函数内调用顺序函数

时间:2017-09-18 09:51:49

标签: r function sequence

给定一系列功能 B1,B2,..,B20

如何创建一个同时调用所有或部分预定义函数的函数?

我想要的是function(start=B1,end=B12),它会同时调用B1 TO B12个函数。

2 个答案:

答案 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),那么您需要获取通过deparsesubstitute传递的内容的名称:

doBs = function(start=B1){first = deparse(substitute(start));first}

> doBs()
[1] "B1"
> doBs(B2)
[1] "B2"
> 

然后拆分字符串并计算出开始/结束值,将所有函数名称构造为从B {start}到B {end}的字符串,然后get将它们调用并调用它们。

或做正确的事情并将功能粘贴在列表中。