R 1×m矩阵的维数?

R 1×m矩阵的维数?,r,R,R几乎每天都让我大吃一惊: m <- matrix( 1:6, ncol=2 ) while( dim(m)[1] > 0 ){ print(m); m <- m[-1,] } R对1xn矩阵有问题吗?或者我的错误在哪里 > nrow( m[-c(2,3), ] ) NULL > dim( m[-c(2,3), ] ) NULL > m[-c(2,3), ][,1] Error in m[-c(2, 3), ][, 1] : incorrect nu

R几乎每天都让我大吃一惊:

m <- matrix( 1:6, ncol=2 )
while( dim(m)[1] > 0 ){
  print(m);
  m <- m[-1,]
}
R对1xn矩阵有问题吗?或者我的错误在哪里

> nrow( m[-c(2,3), ] )
NULL
> dim( m[-c(2,3), ] )
NULL
> m[-c(2,3), ][,1]
Error in m[-c(2, 3), ][, 1] : incorrect number of dimensions
> str( m[-c(2,3), ] )
int [1:2] 1 4
你知道如何轻松修复与我实际问题接近的初始示例吗?顺便说一句:这个循环是我算法的瓶颈。因此,有效的解决方案受到赞赏


非常感谢

子集设置的默认行为是转换为更简单的结构(如果适用)。换句话说,一旦您将子集设置为1xn矩阵,对象将转换为向量

要更改此行为,请将
drop=FALSE
参数用于
[

m <- matrix( 1:6, ncol=2 )
while( dim(m)[1] > 0 ){
  print(m);
  m <- m[-1, , drop=FALSE]
}

     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
     [,1] [,2]
[1,]    2    5
[2,]    3    6
     [,1] [,2]
[1,]    3    6
m0){
印刷品(m);

m我知道我不应该花时间在文档中寻找drop=FALSE参数。这是一个关于此类“惊喜”的极好指南;见第8.1.44节。另请参见:
m <- matrix( 1:6, ncol=2 )
while( dim(m)[1] > 0 ){
  print(m);
  m <- m[-1, , drop=FALSE]
}

     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
     [,1] [,2]
[1,]    2    5
[2,]    3    6
     [,1] [,2]
[1,]    3    6