Selecionar linhas de um quadro de dados com base em valores em um vetor

Eu tenho dados semelhantes a este:

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

Eu quero selecionar linhas deste quadro de dados com base nos valores nofct variável. Por exemplo, se eu quiser selecionar linhas contendo "a" ou "c", posso fazer isso:

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

que produz

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

como esperado. Mas meus dados reais são mais complexos e, na verdade, quero selecionar linhas com base nos valores de um vetor, como

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

Então eu tentei

dt[dt$fct == vc, ]

mas é claro que isso não funciona. Eu sei que eu poderia codificar algo para percorrer o vetor e extrair as linhas necessárias e anexá-las a um novo dataframe, mas eu esperava que houvesse uma maneira mais elegante.

Então, como eu posso filtrar / subconjunto meus dados com base no conteúdo do vetorvc?

questionAnswers(3)

yourAnswerToTheQuestion