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.


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.