使用一列作为 R 中的选择器仅保留矩阵的某些行

Keeping only some rows of a matrix using one column as choice-maker in R

我在 R 中有一个矩阵,我想根据列只保留其中的一些行。例如,如果我有此处显示的矩阵 A

1 2 5 6 8 
1 3 4 5 7
8 8 6 7 7
9 8 8 5 4
0 2 3 4 5

我希望能够只保留 A 的最后一列为 7 或 4 的行,即获得矩阵 B :

1 3 4 5 7
8 8 6 7 7
9 8 8 5 4

我怎样才能高效地做到这一点?

谢谢!

您可以对多个值使用 %in%

 A[A[,ncol(A)] %in% c(7,4),]
 #     [,1] [,2] [,3] [,4] [,5]
 #[1,]    1    3    4    5    7
 #[2,]    8    8    6    7    7
 #[3,]    9    8    8    5    4

或者如果我们使用 "data.frame",它可以转换为 "data.table" (setDT),将相关列设置为 "key" (setkey) 和子集数据集。

 library(data.table)
 setkey(setDT(as.data.frame(A)), V5)[J(c(7,4))]
 #   V1 V2 V3 V4 V5
 #1:  1  3  4  5  7
 #2:  8  8  6  7  7
 #3:  9  8  8  5  4