如何以智能的方式在R中应用多个功能的组合?

如何以智能的方式在R中应用多个功能的组合?,r,R,假设我有四个函数。这些只是示例函数。在实际场景中,函数要复杂得多 f1= function(data){ data1= data*2 return (data1) } f2= function(data){ data1= data*4 return (data1) } f3= function(data){ data1= data*data return (data1) } f4= function(data){ data1= data**5 return

假设我有四个函数。这些只是示例函数。在实际场景中,函数要复杂得多

f1= function(data){
  data1= data*2
  return (data1)
}

f2= function(data){
  data1= data*4
  return (data1)
}

f3= function(data){
  data1= data*data
  return (data1)
}

f4= function(data){
  data1= data**5
  return (data1)
}

data = matrix(1:100,10,10)
现在我想应用所有这些函数的组合,并查看每个函数的输出

f1 then f2
f1 then f3
f1 then f4
... f1 then f2 then f3, 
f1 then f2 then f4.... 
f1 then f2 then f3 then f4.

我的问题是如何巧妙地将所有这些功能组合起来

首先,我将把您的函数放在一个列表中

ff <- list(f1=f1,f2=f2,f3=f3,f4=f4)

你是说你想看看这些函数的所有应用程序的组合吗?请从你的问题标题中删除“一个棘手的问题”。这没用,是的。我想看看这些函数的应用组合。顺序对你来说重要吗?或者你只是关心它们得到appliedApparently顺序,所以你还想看看allcomb结果中向量的所有排列。这与我需要的类似(我需要排列)。然而,我试着将combn改为permn,但它并没有按照我需要的方式工作。这是因为perm只给出了4的排列,而不是小于4的排列。有解决办法吗?
allcomb <- function(x) {
    do.call("c", lapply(seq_along(x), function(n) combn(x,n, simplify=FALSE)))
}
setNames(
    lapply(
       allcomb(ff),
       function(X) Reduce(function(d,f) f(d), X, init=data)
    ),
    sapply(allcomb(names(ff)), paste, collapse=":")
)