在R中乘以两个不同的列表对象

时间:2017-03-03 05:13:39

标签: r

我已阅读Multiplying Combinations of a list of lists in R.但我仍无法将其应用于我的案例。

我在R中有两个不同的列表:

x <- list(matrix(1:4,nrow=2), matrix(5:8, nrow=2))
y <- list(matrix(c(1,0,0,1), nrow=2), matrix(c(0,1,0,1), nrow=2) )

我想将x的第一个元素与y的第一个元素相乘; x的第二个元素,y的第二个元素。也就是说,

x[[1]] * y[[1]]
x[[2]] * y[[2]]

但我不想为每个元素编写一行代码,因为每个列表中有100个元素。

1 个答案:

答案 0 :(得分:2)

您可以使用map,如下所示:

Map('*',x,y)

以上代码的输出如下所示:

> Map('*',x,y)
  [[1]]
      [,1] [,2]
[1,]    1    0
[2,]    0    4

 [[2]]
      [,1] [,2]
[1,]    0    0
[2,]    6    8

您可以使用unlist一起取消列表和多个列表:

Listxy <- list(unlist(x)*unlist(y))
Listxy
[[1]]
[1] 1 0 0 4 0 6 0 8