2

我有一个4 列 100 行的矩阵m 。矩阵的头部如下所示:

    head(m)
      [,1]  [,2]     [,3]       [,4]
 [1,] 1256 1.0000000 3.709184    0
 [2,] 8402 0.4226495 3.644793    0
 [3,]  656 0.4117985 3.165158    0
 [4,] 3925 0.4098163 3.239075    0
 [5,] 4987 0.4077779 3.471448    0
 [6,] 4715 0.4051867 3.400527    2

我想要做的是选择第四列不同于 0 的所有行。在上面的示例中,我应该返回:

     [,1]  [,2]     [,3]       [,4]
 [1,] 4715 0.4051867 3.400527    2        

我尝试了以下哪个命令:

    m[,which(m[,4]!=0)]

但我不断收到错误“索引超出限制。我做错了什么?有没有一种简单的方法可以实现我想要的?

4

1 回答 1

2

正如eddi提到的,问题只是一个放错位置的逗号。解决方案应该是:

    m[which(m[,4]!=0),]

此外,正如mrip所提到的,没有必要使用它。我可以简单地使用:

    m[m[,4]!=0,]
于 2013-10-12T11:29:36.937 回答