4

我有一个名为 m 的矩阵,如下所示

> m<-matrix(1:15,3,5)
> m
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    4    7   10   13
[2,]    2    5    8   11   14
[3,]    3    6    9   12   15

我想删除这个矩阵的第一列。在一个函数中,我传递了一个名为j的值,它总是比m中的列数小1(在这个例子中j是 4)。因此我使用了以下代码

 >m[,2:4+1]
     [,1] [,2] [,3]
[1,]    7   10   13
[2,]    8   11   14
[3,]    9   12   15

但它只给出最后 3 列。然后我将代码更改如下

 >m[,2:(4+1)]

这次我得到了正确的输出。它也为以下代码提供相同的输出

> m[,1:4+1]

有人请解释一下以下代码是如何工作的?

>m[,2:4+1]
>m[,1:4+1]
4

1 回答 1

11

:优先级高于+,因此2:4+1被解释(2:4)+1为 与 相同3:5

2:4+1
[1] 3 4 5

同样,1:4+1被解释为2:5

1:4+1
[1] 2 3 4 5

要删除矩阵中的列,使用负下标输入可能更容易[

m[,-1]
     [,1] [,2] [,3] [,4]
[1,]    4    7   10   13
[2,]    5    8   11   14
[3,]    6    9   12   15
于 2013-10-25T07:24:58.403 回答