Выберите строки из фрейма данных на основе значений в векторе

У меня есть данные, похожие на это:

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 переменная. Например, если я хочу выбрать строки, содержащие либо & quot; a & quot; или "с"; Я могу сделать это:

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?

Ответы на вопрос(3)

Ваш ответ на вопрос