2012-08-25 21 views
48

Ho una lista in R di circa 10.000 elementi. Dire che voglio selezionare solo elementi, 5, 7 e 9. Non sono sicuro di come lo farei senza un ciclo for.Selezionare più elementi da un elenco

Voglio fare qualcosa come mylist[[c(5,7,9]] ma questo non funziona. Ho anche provato la funzione lapply ma non sono riuscito a farlo funzionare.

+10

Dalla documentazione trovata su '?" [[":: * La distinzione più importante tra' [',' [['e' $ 'è che il' ['può selezionare più di un elemento mentre gli altri due seleziona un singolo elemento. * – A5C1D2H2I1M1N2O1R2T1

+0

Oltre al commento di @ mrdwab, questo è il mondo vettoriale di R, "un singolo elemento" può essere un vettore! – seancarmody

risposta

93

mylist[c(5,7,9)] dovrebbe farlo.

Si desidera che le sottoliste vengano restituite come sottoliste nell'elenco dei risultati; non si usa [[]] (o meglio, la funzione è [[) per quello - come Dason menziona nei commenti, [[ afferra l'elemento.

+6

Solo per aggiungere qualche dettaglio in più - "[" restituirà una sottolista quindi è logico che tu possa utilizzare più input con essa. "[[" prenderà effettivamente l'elemento stesso in modo che possa prendere solo un singolo input poiché non sta restituendo una lista (a meno che l'elemento stesso non sia una lista). – Dason

+0

Questo è vettorializzato? Ho due liste: 'b' contiene 10 milioni di elementi. 'filter_bins' è una lista in cui ogni elemento è un indice. quindi per ottenere solo elementi da 'b' con lo stesso indice, ho ' lapply (filter_bins, function (x) b [x,]) ' quindi b [x,] restituisce solo un sottoinsieme delle righe (dove ogni elemento è scelto da filter_bins) .. Spero che abbia senso. La mia domanda è che questo è molto lento – masfenix

+0

@masfenix dovresti generare una nuova domanda che descrive i dettagli. –

Problemi correlati