2017-03-03 81 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