¡+1 por recordarnos Reducey la correcta capitalización R!
mariotomo
8
Vale la pena señalar que intersectes para operaciones de configuración. Si tiene elementos recurrentes en los vectores, perderá esta información porque los vectores se convierten en conjuntos antes de la intersección. Por ejemplo, intersect(c(1,1,2,3), c(1,1,3,4))daría como resultado c(1,3), y es posible que haya querido el resultado c(1,1,3).
Giora Simchoni
1
@GioraSimchoni, ¿cómo podrías obtener c (1,1,3), si eso es realmente lo que quieres?
EstadísticasSorceress
@StatsSorceress Suponga que desea los "duplicados que preservan la intersección" de los vectores que consisten en enteros positivos, todos en una lista L. El siguiente código funciona: N <- max(unlist(L)); LT <- lapply(L, tabulate, nbins = N); v <- do.call(pmin, LT); unlist(sapply(1:N, function(x) rep(x, v[x])))Otra forma de hacerlo sería usar la matchfunción junto con la suscripción negativa para eliminar iterativamente de cada uno de los vectores cada elemento agregado al "kernel".
Montgomery Clift
24
Una buena respuesta ya, pero hay un par de otras formas de hacerlo:
ccomo nombre de variable ...c(1,2...).Respuestas:
Puede haber una forma más inteligente de hacerlo, pero
Hará el trabajo.
EDITAR: de manera más inteligente y más conveniente si tiene muchos argumentos:
fuente
Reducey la correcta capitalización R!intersectes para operaciones de configuración. Si tiene elementos recurrentes en los vectores, perderá esta información porque los vectores se convierten en conjuntos antes de la intersección. Por ejemplo,intersect(c(1,1,2,3), c(1,1,3,4))daría como resultadoc(1,3), y es posible que haya querido el resultadoc(1,1,3).N <- max(unlist(L)); LT <- lapply(L, tabulate, nbins = N); v <- do.call(pmin, LT); unlist(sapply(1:N, function(x) rep(x, v[x])))Otra forma de hacerlo sería usar lamatchfunción junto con la suscripción negativa para eliminar iterativamente de cada uno de los vectores cada elemento agregado al "kernel".Una buena respuesta ya, pero hay un par de otras formas de hacerlo:
o,
Obviamente, puede omitir las
uniquellamadas si sabe que no hay valores repetidos dentro dea,boc.fuente
ACTUALIZAR EDITAR Un código más simple
fuente