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

根据R中的子集获取特定行,r,dataframe,subset,R,Dataframe,Subset,我已经试了好几个小时了。我有一个包含两列的数据集,我们称它们为V1和V2。我还有一个重要V1值列表-Vx。我用intersect函数获取了V1的子集,因此: intersect <- intersect(df$V1,Vx) 还有一个列表,包含 l <- c("a54","sdx637") 正如我所说,我一直使用的代码为我提供了所有NAs,是否有其他选择?非常感谢。你可以试试 subset(df, V1 %in% l) # V1 V2 #1 a54 hi #3 sd

我已经试了好几个小时了。我有一个包含两列的数据集,我们称它们为V1和V2。我还有一个重要V1值列表-Vx。我用intersect函数获取了V1的子集,因此:

intersect <- intersect(df$V1,Vx)
还有一个列表,包含

l <- c("a54","sdx637")
正如我所说,我一直使用的代码为我提供了所有NAs,是否有其他选择?非常感谢。

你可以试试

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>


谢谢你,这似乎有效。不过还有一件事。你认为我的l是300个元素长,但得到的子集更长,这背后的原因是什么?是否有重复项?@sdgawerzswer该列将有重复项。您可以检查
any(表(df$V1)>1)
以查看是否有多个元素
subset(df, V1 %in% l)
#      V1 V2
#1    a54 hi
#3 sdx637 hi
 intersect(df$V1, l)
 #[1] "a54"    "sdx637"
 df[intersect(df$V1, l),]
 #     V1   V2
 #NA   <NA> <NA>
 #NA.1 <NA> <NA>
  df[df$V1 %in% l,]
  library(dplyr)
  filter(df, V1 %in% l)
  library(data.table)
  setDT(df)[V1 %chin% l]