如何在R中删除矩阵行,条件是特定列的值满足某个条件?


要删除矩阵中特定列的值满足某个条件的行,我们可以使用带单方括号的子集,并根据条件获取矩阵的子集。例如,如果我们有一个矩阵M,并且想要删除M的第一列不包含值5的行,那么我们可以使用命令M[M[,1]==5,]。

示例

考虑下面的矩阵:

 在线演示

M1<-matrix(rpois(80,2),ncol=4)
M1

输出

    [,1] [,2] [,3] [,4]
[1,]  1    1    5    4
[2,]  5    2    3    1
[3,]  2    4    4    2
[4,]  1    0    0    2
[5,]  1    6    2    0
[6,]  2    1    2    1
[7,]  1    3    4    2
[8,]  3    1    1    0
[9,]  1    2    2    2
[10,] 0    0    0    1
[11,] 2    1    2    3
[12,] 1    2    4    1
[13,] 1    3    1    1
[14,] 3    3    1    2
[15,] 2    1    2    1
[16,] 2    0    2    1
[17,] 5    2    2    3
[18,] 0    0    0    0
[19,] 2    2    6    1
[20,] 3    1    1    0

如果第一列值不包含2,则删除M1的行:

示例

M1[M1[,1]==2,]

输出

    [,1] [,2] [,3] [,4]
[1,]  2    4    4    2
[2,]  2    1    2    1
[3,]  2    1    2    3
[4,]  2    1    2    1
[5,]  2    0    2    1
[6,]  2    2    6    1

示例

 在线演示

M2<-matrix(rpois(80,1),ncol=4)
M2

输出

    [,1] [,2] [,3] [,4]
[1,]  0    3    2    2
[2,]  0    1    1    0
[3,]  0    0    0    3
[4,]  5    0    3    0
[5,]  0    1    0    1
[6,]  0    0    3    2
[7,]  1    0    0    1
[8,]  0    1    1    2
[9,]  1    1    2    1
[10,] 2    2    1    0
[11,] 1    0    2    0
[12,] 1    0    3    1
[13,] 1    1    0    0
[14,] 2    0    3    1
[15,] 1    0    1    1
[16,] 2    2    0    1
[17,] 1    0    0    2
[18,] 0    1    2    2
[19,] 1    1    5    0
[20,] 2    2    2    0

如果第一列值包含0,则删除M2的行:

示例

M2[M2[,1]!=0,]

输出

    [,1] [,2] [,3] [,4]
[1,]  5    0    3    0
[2,]  1    0    0    1
[3,]  1    1    2    1
[4,]  2    2    1    0
[5,]  1    0    2    0
[6,]  1    0    3    1
[7,]  1    1    0    0
[8,]  2    0    3    1
[9,]  1    0    1    1
[10,] 2    2    0    1
[11,] 1    0    0    2
[12,] 1    1    5    0
[13,] 2    2    2    0

更新于:2021年3月17日

796 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告