选择R中的子矩阵

Che*_*ara 4 r matrix

我有一个名为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
Run Code Online (Sandbox Code Playgroud)

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

 >m[,2:4+1]
     [,1] [,2] [,3]
[1,]    7   10   13
[2,]    8   11   14
[3,]    9   12   15
Run Code Online (Sandbox Code Playgroud)

但它只给出了最后3列.然后我按如下方式更改了代码

 >m[,2:(4+1)]
Run Code Online (Sandbox Code Playgroud)

这次我有正确的输出.它也为下面的代码提供相同的输出

> m[,1:4+1]
Run Code Online (Sandbox Code Playgroud)

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

>m[,2:4+1]
>m[,1:4+1]
Run Code Online (Sandbox Code Playgroud)

Jam*_*mes 11

:优先级高于+,因此2:4+1得到的解释(2:4)+13:5:

2:4+1
[1] 3 4 5
Run Code Online (Sandbox Code Playgroud)

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

1:4+1
[1] 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

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

m[,-1]
     [,1] [,2] [,3] [,4]
[1,]    4    7   10   13
[2,]    5    8   11   14
[3,]    6    9   12   15
Run Code Online (Sandbox Code Playgroud)