Seleccionar varios elementos de una lista

82

Tengo una lista en R de unos 10.000 elementos. Digamos que quiero seleccionar solo elementos, 5, 7 y 9. No estoy seguro de cómo lo haría sin un bucle for.

Quiero hacer algo así, mylist[[c(5,7,9]]pero no funciona. También probé la lapplyfunción pero tampoco he podido hacer que funcione.

usuario1357015
fuente
17
De la documentación que se encuentra en ?"[[": La distinción más importante entre [, [[y $es que [pueden seleccionar más de un elemento mientras que los otros dos seleccionan un solo elemento.
A5C1D2H2I1M1N2O1R2T1
Además del comentario de @ mrdwab, siendo este el mundo vectorizado de R, ¡"un solo elemento" puede ser un vector!
seancarmody

Respuestas:

136

mylist[c(5,7,9)] Deberías hacerlo.

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

Glen_b
fuente
8
Solo para agregar más detalles: "[" devolverá una sublista, por lo que tiene sentido que pueda usar múltiples entradas con ella. "[[" realmente tomará el elemento en sí, por lo que solo puede tomar una entrada, ya que no devuelve una lista (a menos que el elemento en sí sea una lista).
Dason
¿Está esto vectorizado? Tengo dos listas: bcontiene 10 millones de elementos. filter_binses una lista donde cada elemento es un índice. así que para obtener solo elementos bcon el mismo índice, tengo lapply(filter_bins, function(x) b[x, ]) 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
@masfenix debe generar una nueva pregunta que describa los detalles.
Glen_b
¿Se puede hacer la solución anterior con algo como dplyr :: select () y contiene ('algo de texto')?
Abandonado
3
@HermanToothrot No es así. Al menos no directamente. Puede aplicar o aplicar sobre los índices que desea extraer y tomar iterativamente el elemento correspondiente [[. Pero si desea extraer varios elementos, entonces realmente está tomando una sublista y debería usar[
Dason