2012-08-25 26 views
48

Tengo una lista en R de unos 10 000 elementos. Supongamos que quiero seleccionar solo elementos, 5, 7 y 9. No estoy seguro de cómo lo haría sin un bucle for.Seleccionar elementos múltiples de una lista

Quiero hacer algo como mylist[[c(5,7,9]] pero eso no funciona. También probé la función lapply, pero tampoco he podido hacer que funcione.

+10

De la documentación encontrada en '?" [["': * La distinción más importante entre '[', '[' 'y' $ 'es que' '' puede seleccionar más de un elemento mientras que los otros dos seleccione un solo elemento. * – A5C1D2H2I1M1N2O1R2T1

+0

Además del comentario de @mrdwab, este es el mundo vectorizado de R, "un elemento único" puede ser un vector! – seancarmody

Respuesta

93

mylist[c(5,7,9)] debería hacerlo.

Desea que las sublistas vuelvan como sublistas de la lista de resultados; no usa [[]] (o más bien, la función es [[) para eso - como Dason menciona en los comentarios, [[ toma el elemento.

+6

Solo para agregar más detalles: "[" devolverá una sublista, por lo que tiene sentido que pueda usar múltiples entradas con ella. "[[" tomará realmente el elemento en sí, por lo que solo puede tomar una entrada porque no devuelve una lista (a menos que el elemento en sí sea una lista). – Dason

+0

¿Está esto vectorizado? Tengo dos listas: 'b' contiene 10 millones de elementos. 'filter_bins' es una lista donde cada elemento es un índice. solo para obtener elementos de 'b' con el mismo índice, tengo ' lapply (filter_bins, function (x) b [x,]) ' así que b [x,] solo devuelve un subconjunto de las filas (donde cada elemento es elegido por filter_bins) .. Espero que esto tenga sentido. Mi pregunta es que esto es muy lento – masfenix

+0

@masfenix debe generar una nueva pregunta que describa los detalles. –

Cuestiones relacionadas