我想知道是否有人可以向我提供一个解释,说明为什么用-0代替列或行indice删除所有列或行。
假设我有
mat<-matrix(1:9,3,3)
做
mat[-0,]
生成
[,1] [,2] [,3]
同样
mat[-0,]
[1,]
[2,]
[3,]
有谁知道为什么会这样?
假设我在上面的索引中偶尔会产生一个0的东西,除了使用if循环之外,有没有办法避免这种行为?
答案 0 :(得分:2)
-
不相关,它是索引0
。您的3x3
矩阵的索引范围为rows: 1..3, columns: 1..3
。
当您尝试访问索引为0
(mat[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]