我已阅读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个元素。
答案 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