R 在列表中的元素组合上应用函数

R 在列表中的元素组合上应用函数,r,matrix,combinations,R,Matrix,Combinations,我想迭代R中列表中元素的成对组合,然后使用该组合作为输入执行一个函数 在这个最小示例中,我(1)定义了三个矩阵,(2)将它们组合成一个包含矩阵作为元素的列表,然后(3)想计算列表中元素组合的点积(即矩阵1与矩阵2和矩阵2与矩阵3) 到目前为止,我使用嵌套循环将matrix.list的所有组合作为dot.prod()的输入 for (i in 1:length(matrix.list)){ for (j in 1:length(matrix.list)){ prin

我想迭代R中列表中元素的成对组合,然后使用该组合作为输入执行一个函数

在这个最小示例中,我(1)定义了三个矩阵,(2)将它们组合成一个包含矩阵作为元素的列表,然后(3)想计算列表中元素组合的点积(即矩阵1与矩阵2和矩阵2与矩阵3)

到目前为止,我使用嵌套循环将matrix.list的所有组合作为dot.prod()的输入

for (i in 1:length(matrix.list)){

  for (j in 1:length(matrix.list)){

            print(dot.prod(matrix.list[[i]], matrix.list[[j]]))
  }
}
在R中使用组合函数(如combn())可以做到这一点吗?如有任何建议,我将不胜感激

编辑:函数本身并不重要-我想知道如何使用列表中的元素组合作为任何R函数的输入

oo <- outer(matrix.list, matrix.list, Vectorize(crossprod, SIMPLIFY = FALSE))
这个?

combn(matrix.list, 2, function (u) u[[1]] %*% u[[2]])
mapply("%*%", matrix.list[-length(matrix.list)], matrix.list[-1], SIMPLIFY = FALSE)

您能否提供一个可复制的示例(只需在顶部添加
set.seed
)并显示此示例所需的输出?我不完全清楚你最后想要什么结构,以及你从什么结构开始。谢谢你的回复。澄清一下:我想计算点积,而不是叉积,正如我在第一个问题中所说的。然而,函数本身并不重要——我想知道如何使用列表中的元素组合作为任何R函数的输入。
mapply("%*%", matrix.list[-length(matrix.list)], matrix.list[-1], SIMPLIFY = FALSE)