Applying a function to two lists?

妖精的绣舞 提交于 2019-12-28 03:01:12

问题


To find the row-wise correlation of two matrices X and Y, the output should have a correlation value for row 1 of X and row 1 of Y, ..., hence in total ten values (because there are ten rows):

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

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

Now, how should I apply this function to two lists (containing around 50 dataframes each)?

Consider list A has dataframes $1, $2, $3... and so on and list B has similar number of dataframes $1, $2, $3. So the function should be applied to listA$1,listB$1 and listA$2,listB$2 ... and so on for other dataframes in the list. In the end I will have ten values in case of comparison 1 (listA$1 and listB$1) and for others as well.

Could this be done using "lapply"?


回答1:


You seem to be looking for mapply. Here's an example:

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)


来源:https://stackoverflow.com/questions/19002378/applying-a-function-to-two-lists

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!