web-dev-qa-db-ja.com

2つのリストに関数を適用しますか?

2つの行列XとYの行ごとの相関を見つけるには、出力にXの行1とYの行1の相関値が含まれている必要があります。

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

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

さて、どうすればいいですかこの関数を2つのリストに適用します(それぞれ約50データフレームを含む)?

リストAにデータフレーム$ 1、$ 2、$ 3 ...があり、リストBに同様の数のデータフレーム$ 1、$ 2、$ 3があるとします。したがって、関数はlistA$1,listB$1およびlistA$2,listB$2 ...リスト内の他のデータフレームについても同様です。最後に、比較1(listA$1およびlistB$1)と他の人にも。

これは「lapply」を使用して実行できますか?

25
Paul

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)
40
shadow