13

リストのリストで簡単な計算を行う簡単な方法はありますか?

x <- list(a=list(1:4),b=list(1:6))
y <- list(a=list(1:4),b=list(1:6))

私が試してみると:

x+y

エラーが発生しました:x + yのエラー:二項演算子への非数値引数

Xとyは同じ長さで、整数のみが含まれます。行列を使用すると、y + xを実行できますが、リストを含むリストに対してこれを実行する方法はありますか?

4

2 に答える 2

10

mapply各リストの構造が同じであると仮定すると、次のように使用できます。

  mapply(function(x1, y1) x1[[1]]+y1[[1]], x, y)
于 2013-03-07T14:45:17.640 に答える
10

lapply各 2 つのリストを同時に通過するために使用できます。

 lapply(seq_along(x),function(i)
         unlist(x[i])+unlist(y[i]))

[[1]]
a1 a2 a3 a4 
 2  4  6  8 

[[2]]
b1 b2 b3 b4 b5 b6 
 2  4  6  8 10 12 

x と y の長さが同じでない場合は、次のようにすることができます。

 lapply(seq_len(min(length(x),length(y)),function(i)
         unlist(x[i])+unlist(y[i]))
于 2013-03-07T14:46:49.097 に答える