我有一个包含100个元素的列表。每个元素都是一个列表。这个列表中有两个元素。一个是关键另一个是矩阵。这个矩阵有5列。我试图从这些矩阵的每一个中为所有元素提取一列。所以基本上我会再有100个矩阵作为列表的一个元素。这就是列表的样子从列表中的矩阵中提取一列R
a[[1]]
[[1]]
[1] "keyid"
[[2]]
[,1] [,2] [,3] [,4] [,5]
[1,] "1329397986.572332" "x" "y" "z" "a"
[2,] "1329242747.368294" "x" "y" "z" "a"
[3,] "1329194224.351232 "x" "y" "z" "a"
所以你可以在这里看到的是一个列表,它有100个元素。每个元素都是2个元素的列表。我目前只对第二个元素感兴趣。第二个元素有一个矩阵。我想提取这个矩阵的第一列。只看我是否可以将列提取到一个向量中,我可以做
a[[1]][[2]][,1]
我将所有的值作为向量,如下所示。
a[[1]][[2]][,1]
[1] "1329397986.572332" "1329242747.368294" "1329194224.351232"
但是当我做
x <- lapply(a,function(r){r[[2]][,1]})
以下是我的错误。
> x <- lapply(a, function(r){r[[2]][,1]})
Error in r[[2]][, 1] : incorrect number of dimensions
我不知道为什么我这样做。我检查了矩阵元素的尺寸。
> dim(a[[1]][[2]])
[1] 52 5
它看起来是正确的。所以我不确定错误在哪里。
dput(一)给出
dput(a)
[[1]]
[[1]][[1]]
[1] "keyid"
[[1]][[2]]
[,1] [,2] [,3] [,4] [,5]
[1,] "1329397986.572332" "x" "y" "z" "a"
[2,] "1329242747.368294" "x" "y" "z" "a"
[3,] "1329194224.351232" "x" "y" "z" "a"
[[2]]
[[2]][[1]]
[1] "keyid"
[[2]][[2]]
[,1] [,2] [,3] [,4] [,5]
[1,] "1329397986.572332" "x" "y" "z" "a"
[2,] "1329242747.368294" "x" "y" "z" "a"
[3,] "1329194224.351232" "x" "y" "z" "a"
...
[[100]]
[[100]][[1]]
[1] "keyid"
[[100]][[2]]
[,1] [,2] [,3] [,4] [,5]
[1,] "1329397986.572332" "x" "y" "z" "a"
[2,] "1329242747.368294" "x" "y" "z" "a"
[3,] "1329194224.351232" "x" "y" "z" "a"
你可以在这里发布'dput(a)'的输出..很难理解发生了什么,而不会在我们的终端上复制。 – 2013-04-24 02:20:51
'dput(a)'将会非常大,有100个列表条目。我怀疑其中一个是畸形的。 – 2013-04-24 02:25:34
'dput(a)'does * not * give that! – 2013-04-24 02:29:14