2015-02-03 14 views
7

Sono un principiante di R e sono bloccato su questo problema. Ho avuto un dataframe e utilizzando la funzione split() Ho creato un elenco di dataframes, per esempio:recupera colonna dall'elenco dei dati R

dfList <- split(mtcars, mtcars$cyl) 

Ora voglio recuperare una colonna di una dataframe specifica, per esempio colonna 2 da dataframe 1, in modo da qualcosa come

dfList[1][2] 

Che cosa posso fare adesso è creare for loop per ottenere all'interno della struttura di dati. Ma non riesco a trovare un oneliner per farlo, se esiste. Come lo posso fare? Grazie in anticipo!

+5

Prova 'lapply (dfList, '[[', 2)'. Se ti serve come una matrice 'sapply (dfList, '[[', 2)' – akrun

+3

Forse vuoi usare 'dfList [[1]] [2]'? Ecco un esempio per testare: 'lst <- split (mtcats, mtcars $ cyl)' e quindi 'lst [[1]] [2]'. –

risposta

7

Sto mettendo qui il commento di docendo per chiudere la domanda.

Se si desidera estrarre un elemento da un elenco (e trattarlo come un data.frame) piuttosto che un sottoinsieme di un elenco (per creare un elenco più piccolo), è necessario utilizzare la sintassi [[ ]]. Inoltre, per ottenere una colonna per indice da un data.frame, è necessario utilizzare [[ idx ]] o [, idx ]. Si tratta di operazioni di indicizzazione piuttosto di base che si avrà probabilmente desidera rivedere se sarà programmando in R. Quindi la vostra chiamata "corretta" è probabilmente

dfList[[1]][[2]]