リストのリストで簡単な計算を行う簡単な方法はありますか?
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を実行できますが、リストを含むリストに対してこれを実行する方法はありますか?
mapply
各リストの構造が同じであると仮定すると、次のように使用できます。
mapply(function(x1, y1) x1[[1]]+y1[[1]], x, y)
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]))