如何索引R矩阵而不将其转换为向量

6

我声明了一个1行6列的矩阵A:

A <- matrix(1:6, nrow=1)

我执行dim(A)命令,预计会得到1x6的结果...然后我执行A[,2:5]命令,期望得到一个1x4的矩阵,其元素为2,3,4,5。但是实际上,dim(A[,2:5])的结果是NULL!它变成了一个向量或其他形式。我该如何避免这种情况?
我最终想要做的事情是:
A[,a:b] %*% X[a:b,a:b] %*% t(A[,a:b])

更改 a 和 b,这样我只能将上述矩阵的部分相乘...但是当 A 衰变为向量时,这种方法就会失效...感谢。
1个回答

9

在涉及到 ] 的情况下,可以将 ,drop=FALSE 作为额外的(尾部)参数使用。

例如:

R> M <- matrix(1:4,2,2)
R> M[,2]                  ## looses matrix class
[1] 3 4
R> M[,2,drop=FALSE]       ## forced to a n x 1 matrix
     [,1]
[1,]    3
[2,]    4
R> 

这可能是主要的常见问题解答,但由于兼容性原因,行为不太可能改变。


3
好的,我很高兴听到这个消息。在这里,通常通过点击勾号“接受”最佳答案,只有你作为问题的原始发布者才能这样做。 - Dirk Eddelbuettel
2
请看《R地狱》第8.1.44圆节:http://www.burns-stat.com/pages/Tutor/R_inferno.pdf - Patrick Burns

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接