Wybierz wiersze z ramki danych na podstawie wartości w wektorze

Mam dane podobne do tego:

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))

Chcę wybrać wiersze z tej ramki danych na podstawie wartości wfct zmienna. Na przykład, jeśli chcę wybrać wiersze zawierające „a” lub „c”, mogę to zrobić:

dt[dt$fct == 'a' | dt$fct == 'c', ]

co daje

1    a 2
3    c 3
5    c 5
7    a 7
9    c 9
10   a 1
12   c 2
14   c 4

zgodnie z oczekiwaniami. Ale moje rzeczywiste dane są bardziej złożone i faktycznie chcę wybierać wiersze na podstawie wartości w wektorze, takich jak

vc <- c('a', 'c')

Więc spróbowałem

dt[dt$fct == vc, ]

ale oczywiście to nie działa. Wiem, że mógłbym zakodować coś, aby przejść przez wektor i wyciągnąć potrzebne wiersze i dodać je do nowej ramki danych, ale miałem nadzieję, że będzie bardziej elegancki.

Jak więc mogę filtrować / zestawiać moje dane na podstawie zawartości wektoravc?

questionAnswers(3)

yourAnswerToTheQuestion