2016-07-14 5 views
2

私がやろうとしていること: リスト内のオブジェクトに、別のリストの別のオブジェクトを掛け合わせますか? List_AでRの2つのリストオブジェクトを掛けるR

ベクトル:List_Bで

1 
2 
3 

ベクター:私は、リストB.例えば

にリストAの時間に1000の値のベクトルを1000の値のベクトルを乗算する必要があります

私が欲しい
4 
5 
6 

出力ベクトル、List_A * B:

4 
10 
18 

{lgcp}パッケージにmultiply.list()という名前のものがありますが、それ以上の依存関係が存在しないようです。lapplyを使ってみました。 l1:2進演算子の非数値引数)とmapply(行列を作成し、値をそのまま乗算するのではない)。

私はループ内でこれをすべてやっていますが、cinput.dataとl1は両方ともリストの指定されたセクションです。あなたがコードで一緒にリストを乗算している基づいて

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

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

「ベクトルリスト」とはなんですか?リストそのものがベクトルか、リストにベクトルが入っていますか? –

+0

各リストにはいくつのベクトルがありますか? –

+1

これはあなたが 'mapply(" *、list(1:3)、list(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の "ベクトル"としてリストを参照することは紛らわしい。