编程>提取列表项与列值匹配的行

时间:2012-10-18 08:41:33

标签: r

l <- c("a","b","c")

m是一个5x2数据帧。 C11:5C2a:e

m <- data.frame(C1 = 1:5, C2 = letters[1:5], stringsAsFactors = FALSE)

我想找到n,其中只包含m行,其中m$C2位于l

中所述的值中

结果n为3x2,C2为a:c,即

  C1 C2
1  1  a
2  2  b
3  3  c

1 个答案:

答案 0 :(得分:3)

一种选择是手动与%in%进行匹配:

m <- data.frame(C1 = 1:5, C2 = letters[1:5], stringsAsFactors = FALSE)
l <- c("a","b","c")

with(m, m[C2 %in% l, ])

R> with(m, m[C2 %in% l, ])
  C1 C2
1  1  a
2  2  b
3  3  c

或者通过match()功能:

R> m[with(m, match(C2, l, nomatch = FALSE)), ]
  C1 C2
1  1  a
2  2  b
3  3  c

需要nomatch参数来摆脱NA行。