将函数应用于两个列表?

时间:2013-09-25 10:25:29

标签: r parameter-passing apply mapply

为了找到两个矩阵X和Y的行方向相关性,输出应该具有X的第1行和Y的第1行的相关值,...因此总共有10个值(因为有10行) ):

X <- matrix(rnorm(2000), nrow=10)
Y <- matrix(rnorm(2000), nrow=10)

sapply(1:10, function(row) cor(X[row,], Y[row,]))

现在,我应该如何将此功能应用于两个列表(每个包含约50个数据帧)?

考虑列表A有数据帧$ 1,$ 2,$ 3 ......等等,列表B有相似数量的数据帧$ 1,$ 2,$ 3。因此,该函数应该应用于listA$1,listB$1listA$2,listB$2 ...等等,以便列表中的其他数据帧。最后,我将在比较1(listA$1listB$1)以及其他人的情况下获得10个值。

可以使用“lapply”来完成吗?

1 个答案:

答案 0 :(得分:33)

您似乎在寻找mapply。这是一个例子:

listA <- list(matrix(rnorm(2000), nrow=10),
              matrix(rnorm(2000), nrow=10))
listB <- list(matrix(rnorm(2000), nrow=10),
              matrix(rnorm(2000), nrow=10))
mapply(function(X,Y) {
  sapply(1:10, function(row) cor(X[row,], Y[row,]))
  }, X=listA, Y=listB)