R 1×m矩阵的维数?
R几乎每天都让我大吃一惊: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
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