如何获取列表的子集?

时间:2013-01-26 10:05:59

标签: r

  

可能重复:
  select some values of a row in a matrix
  R subset a data frame with multiple keys

说我有一个清单

  

>测试

  V1    V2   V3
1  1   one  uno
2  2   two duos
3  3 three tres
4  4 four cuatro

和向量a<-c("one","three")

我想得到列表test的子集,其中第二列的元素来自向量a

所以在这种情况下,答案应该是类似的,

  V1    V2   V3
1  1   one  uno
2  3 three tres

我想要的东西就行了 test[test[,2]=="one",]但是有多个值。怎么做?

1 个答案:

答案 0 :(得分:4)

您要找的是%in%(尽管您也可以使用matchsubset)。见下文。

df <- data.frame(V1=1:4, V2=c("one", "two", "three", "four"), stringsAsFactors = FALSE)
fil <- c("one", "three")

> df
#   V1    V2
# 1  1   one
# 2  2   two
# 3  3 three
# 4  4  four

> fil
# [1] "one"   "three"

# subset df by column V2 using fil

# using %in%
df[df$V2 %in% fil, ]

# using subset
subset(df, V2 %in% fil)

# using match
df[!is.na(match(df$V2, fil)), ] # (or) 
df[which(!is.na(match(df$V2, fil))), ]

# all gives
#   V1    V2
# 1  1   one
# 3  3 three