如何在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 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告