У меня есть данные, подобные этому:
dt <- structure(list(fct = structure(c(1L, 2L, 3L, 4L, 3L, 4L, 1L, 2L, 3L, 1L, 2L, 3L, 2L, 3L, 4L), .Label = c("a", "b", "c", "d"), class = "factor"), X = c(2L, 4L, 3L, 2L, 5L, 4L, 7L, 2L, 9L, 1L, 4L, 2L, 5L, 4L, 2L)), .Names = c("fct", "X"), class = "data.frame", row.names = c(NA, -15L))
Я хочу выбрать строки из этого фрейма данных на основе значений в переменной fct
. Например, если я хочу выбрать строки, содержащие "a" или "c", я могу это сделать:
dt[dt$fct == 'a' | dt$fct == 'c', ]
что дает
1 a 2
3 c 3
5 c 5
7 a 7
9 c 9
10 a 1
12 c 2
14 c 4
как ожидалось. Но мои фактические данные более сложны, и я действительно хочу выбрать строки на основе значений в векторе, таких как
vc <- c('a', 'c')
Итак, я попробовал
dt[dt$fct == vc, ]
но, конечно, это не сработает. Я знаю, что я мог бы закодировать что-то, чтобы перебрать вектор и вытащить нужные строки и добавить их в новый фреймворк данных, но я надеялся, что есть более элегантный способ.
Итак, как я могу фильтровать/подмножать свои данные на основе содержимого вектора vc
?