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

r programmingserver side programmingprogramming

要删除矩阵行(如果特定列满足某些条件),我们可以使用单方括号子集并根据条件取矩阵的子集。例如,如果我们有一个矩阵 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

相关文章