【发布时间】:2015-02-11 02:00:38
【问题描述】:
我在 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
我怎样才能有效地做到这一点?
谢谢!
【问题讨论】:
我在 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
【讨论】: