使用一列作为 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
我在 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