行列のリストをRで作成しました。リスト内のすべての行列で、特定のインデックスの行列要素の集合を「取り出す」ことができます。私はコロン演算子が私にこれを1行で実装できると考えていました。例えば、ここでリスト内のすべての行列の[1,1]の要素にアクセスしようとする試みです。「寸法の不正確な数」行列のリストのRコロン演算子
myList = list() #list of matrices
myList[[1]] = matrix(1:9, nrow=3, ncol=3, byrow=TRUE) #arbitrary data
myList[[2]] = matrix(2:10, nrow=3, ncol=3, byrow=TRUE)
#I expected the following line to output myList[[1]][1,1], myList[[2]][1,1]
slice = myList[[1:2]][1,1] #prints error: "incorrect number of dimensions"
上記のコードの最後の行は、エラーをスロー
参考のため、ここでの作業です(あまりエレガント)私は何をしようとしているの実装:
#assume myList has already been created (see the code snippet above)
slice = c()
for(x in 1:2) {
slice = c(slice, myList[[x]][1,1])
}
#this works. slice = [1 2]
は、1行に上記の操作を行う方法を誰もが知っていますか?
私の「マトリックスのリスト」は何か他のものに置き換えることができます。誰かが上記の操作を実行できる代替の「行列の集まり」データ構造を提案できれば、これは解決されます。
おそらく、この質問は愚かです...私は本当にクリーンな1行の実装をしたいと思います。
...インデックスと抽出要素が容易になるだろう。例えば'foo < - list(1,2,3,4); dim(foo)< - c(2,2); foo [1,2]; foo [[1,2]]'です。場合によってはこれが便利な場合もあります。 –
@SachaEpskamp良いキャッチ、私は明確にするために編集します。 – joran
'myList [1:2] [1,1]'はまだ無意味ですが、 'myList [1:2]'は1次元だけのリストを返します。 –