根据 R 中的子集获取特定行

Getting specific rows according to a subset in R

我已经为此尝试了几个小时。我有一个包含两列的数据集,我们称它们为 V1,V2.I 也有一个重要的 V1 值列表 - Vx。我设法获得了具有相交功能的 V1 子集,所以:

intersect <- intersect(df$V1,Vx)

现在我正在拼命地尝试获取与该子集对应的 V2 值。 我试过

subset <- df[intersect(df$V1,Vx),]

但它 returns 我的值,都是 NA。 所以用另一个案例来解释: 我有一个数据集

V1      V2
a54    hi
bc85   hk
sdx637 hi
vbd435 hk

还有一个列表,包含

l <- c("a54","sdx637")

我想得到的是:

 V1      V2
 a54    hi
 sdx637 hi

正如我所说,我一直在使用的代码给了我所有的 NA,还有其他选择吗?非常感谢。

你可以试试

subset(df, V1 %in% l)
#      V1 V2
#1    a54 hi
#3 sdx637 hi

intersect可以用来获取公共元素

 intersect(df$V1, l)
 #[1] "a54"    "sdx637"

但这不会为数据子集提供逻辑索引,

 df[intersect(df$V1, l),]
 #     V1   V2
 #NA   <NA> <NA>
 #NA.1 <NA> <NA>

但是 %in% returns 一个逻辑索引,这对子集化很有用。

正如@Steven Beaupré 在评论中提到的,其他选项包括来自 dplyr

[filter
  df[df$V1 %in% l,]

  library(dplyr)
  filter(df, V1 %in% l)

  library(data.table)
  setDT(df)[V1 %chin% l]