在删除R

时间:2016-01-04 14:10:52

标签: r

我想知道是否有人可以向我提供一个解释,说明为什么用-0代替列或行indice删除所有列或行。

假设我有

 mat<-matrix(1:9,3,3)

mat[-0,] 

生成

[,1] [,2] [,3]
同样

    mat[-0,] 

[1,]
[2,]
[3,]

有谁知道为什么会这样?

假设我在上面的索引中偶尔会产生一个0的东西,除了使用if循环之外,有没有办法避免这种行为?

1 个答案:

答案 0 :(得分:2)

-不相关,它是索引0。您的3x3矩阵的索引范围为rows: 1..3, columns: 1..3

当您尝试访问索引为0mat[0,])的行时,您(如下面指出我的Roland,谢谢!)获得一个零行(和3列)的矩阵。以同样的方式,mat[,0]产生一个零列和3行的矩阵(即空;)。

  

一个特殊情况是零索引,它具有空效果:x [0]是一个   空矢量,否则包括正或负之间的零   index与它们被省略的效果相同。

根据罗兰在上述问题的评论中指出的the language specs(3.4.1)。

mat<-matrix(1:9,3,3)
mat
     [,1] [,2] [,3]   <-- mat[0,] there exists no data here
[1,]    1    4    7   <-- mat[1,] yields this row
[2,]    2    5    8
[3,]    3    6    9

dim(mat[0,])
[1] 0 3

因此,您应该一如既往地确保您的索引不会超出范围(通常太大):此处的0索引可能会被视为有些超出范围,除非您有意想打印列或行&#34;标题&#34;,例如

print(mat[0,])
    [,1] [,2] [,3]