将函数应用于 R 中参数的不同组合

Applying function to different combinations of the arguments in R

我有两个变量(一个独立变量和一个依赖变量),每个变量包含 5 个数据点,我创建了一个 function (x,y) 来为它们拟合不同的模型。这工作得很好。但是,问题是我还需要将相同的函数应用于这些数据点的不同组合。换句话说,我需要使用仅使用 4、3 和 2 个数据点的不同组合来应用函数。总共有 25 种可能的组合。我想知道最有效的方法是什么?

请看下面我的数据示例:

tte <- c(100,172,434,857,1361) #dependent variable
po <- c(446,385,324,290,280) #independent variable

Results <- myFunction (tte=tte, po=po) # customized function

下面是我如何使用 4 个数据点获得所有可能组合的示例:

tte4 <- combn(tte,4)
po4 <- combn(po,4)

请注意,tte4 的第一列始终与 po4 的第一列一起分析。然后,tte4 的第二列与 po4 的第二列,依此类推。我需要做的是对所有这些组合使用 myFunction

我曾尝试通过 for loopmapply 来实现它,但都没有成功。

有什么想法吗?

因为我不知道你想执行什么功能,所以我只是总结了列。此函数采用三个参数:

index = 1 到 tte4 中有多少列的序列(应该与 po4 相同)

x = tte4

y = po4。

然后它应该在两个矩阵上使用该索引来标识您想要的列。在这种情况下,我总结了它们。

tte <- c(100,172,434,857,1361) #dependent variable
po <- c(446,385,324,290,280) #independent variable

results <- function(index, x, y){
  i.x <- x[,index]
  i.y <- y[,index]
  sum(i.x) + sum(i.y)
}

tte4 <- combn(tte, 4)
po4 <- combn(po,4)

index <- 1:ncol(tte4)

sapply(index, results, x = tte4, y = po4)
#[1] 3008 3502 3891 4092 4103

考虑使用 combnsimplify=FALSE 参数,然后使用 mapply(或其包装器 Map 传递向量列表).

tte_list <- combn(tte,4, simplify = FALSE)
po_list <- combn(po, 4, simplify = FALSE)

# MATRIX OR VECTOR RETURN
res_matrix <- mapply(myFunction, tte_list, po_list)

# LIST RETURN
res_list <- Map(myFunction, tte_list, po_list)