我有两个变量(一个独立,一个依赖),每个变量包含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 loop
和mapply
来实现它,但没有取得多大成功。
有什么想法吗?
答案 0 :(得分:0)
由于我不知道你想要执行什么功能,我只是总结了这些列。该函数有三个参数:
index = tte4中有1到多少列的序列(应该与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
答案 1 :(得分:0)
考虑使用combn
的 simplify = 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)