在R中乘以两个不同的列表对象
问题描述:
我已阅读Multiplying Combinations of a list of lists in R.但我仍不能将它应用于我的案例。在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))
欲与y
的第一元件相乘的x
的第一元件; x
的第二个元素与第二个元素y
。也就是说,
x[[1]] * y[[1]]
x[[2]] * y[[2]]
但我不想写一行代码的每个元素,因为我有每个列表中的100个元素。
答
可以使用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
OR
可以使用unlist
到不公开列表,并多个列表在一起:
Listxy <- list(unlist(x)*unlist(y))
Listxy
[[1]]
[1] 1 0 0 4 0 6 0 8
请参阅'?mapply'或'Map'。 – Frank
我没有回答的能力,但另一种可能性是使用'purrr'包装包含以下行:'map2(x,y,function(x,y)x * y)' – Phil