2017-03-03 80 views
1

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

+0

请参阅'?mapply'或'Map'。 – Frank

+1

我没有回答的能力,但另一种可能性是使用'purrr'包装包含以下行:'map2(x,y,function(x,y)x * y)' – Phil

回答

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 

OR

可以使用unlist到不公开列表,并多个列表在一起:

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