2016-07-14 234 views
2

我在做什麼: 將列表中的對象乘以不同列表中的另一個對象?我需要乘以1000個的值的矢量表A時間1000個的值的矢量名單B.將R中的兩個列表對象相乘

例如:

矢量在List_A:

1 
2 
3 

矢量在List_B:

4 
5 
6 

輸出矢量我想,List_A * B:

4 
10 
18 

我在{lgcp}包中找到了一個名爲multiply.list()的東西,但顯然不是所有的依賴關係都存在了,所以我不能使用它...我嘗試使用lapply(不起作用,x * l1:二元運算符的非數字參數)和mapply(它創建一個矩陣,不只是直接乘以這些值)。

我在一個循環內完成所有這些,但cinput.data和l1都是列表的指定部分。

#l2<-lapply(cinput.data, function(x) x*l1) 

#l2<-mapply('*',cinput.data, l1) 
+0

你是什麼意思「列表中的向量」?列表本身是矢量還是列表包含矢量? –

+0

每個列表中有多少個向量? –

+1

這是你正在尋找'mapply(「*」,列表(1:3),列表(1:3),SIMPLIFY = FALSE)? – nrussell

回答

2

在,你在代碼清單相乘的基礎段,您提供的,我要去假設僅列出包含要多向量。我可能會評論澄清這一點,但我沒有代表。

您是否嘗試過「非上市」?

unlist(cinput.data)*unlist(l1) 

這是遠遠複雜,但是從你單獨給出的細節,我不明白爲什麼你想要什麼也不會做。

3

您可以使用Map函數。如果你願意的話,這可以保持數據的列表結構。如果你沒有,你可以簡單地使用unlist

Map('*',l1,l2) 

[[1]] 
[1] 4 

[[2]] 
[1] 10 

[[3]] 
[1] 18 

數據

l1<-list(1,2,3) 

l2<-list(4,5,6) 
1

我覺得你只是想在名單乘以數相加:

> ListA <- list(1,2,3) 
> ListB <- list(4,5,6) 
> ListAB <- list(unlist(ListA)*unlist(ListB)) 
> ListAB 
[[1]] 
[1] 4 10 18 

參考列表作爲R中的「向量」令人困惑,因爲「向量」在R中具有其他含義R