Seleccionar filas de un marco de datos basado en valores en un vector

Tengo datos similares 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))

Quiero seleccionar filas de este marco de datos en función de los valores en elfct variable. Por ejemplo, si deseo seleccionar filas que contengan "a" o "c", puedo hacer esto:

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

cuyos rendimientos

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 se esperaba. Pero mis datos reales son más complejos y, de hecho, quiero seleccionar filas basadas en los valores de un vector como

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

Así que lo intenté

dt[dt$fct == vc, ]

Pero claro que eso no funciona. Sé que podría codificar algo para recorrer el vector y sacar las filas necesarias y agregarlas a un nuevo marco de datos, pero esperaba que hubiera una forma más elegante.

Entonces, ¿cómo puedo filtrar / subcontratar mis datos en función del contenido del vector?vc?

Respuestas a la pregunta(3)

Su respuesta a la pregunta