Применение функции в двух списках

Я хотел найти корреляцию по строкам:

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

Я хотел бы найти корреляцию между каждой строкой A и B следующим образом. Например, должно быть значение корреляции для строки 1 из X и строки 1 из Y. Аналогичным образом для всех строк должно быть общее десять значений (поскольку имеется десять строк)

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

Теперь, как я должен применить эту функцию к двум спискам (содержащим около 50 кадров данных каждый). Учитывая, что в списке A есть dataframes $1, $2, $3... и так далее, и список B имеет схожее число кадров данных $1, $2, $3. Таким образом, функция должна применяться к listA $1 и listB $1 и listA $2, listB $2 и т.д. Для других фреймов данных в списке. В итоге у меня будет десять значений в случае сравнения 1 (listA $1 и listB $1) и для других.

Это можно сделать, используя "lapply". Любая помощь будет оценена.

Ответы

Ответ 1

Кажется, вы ищете 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)