2013-03-24 12 views
8

Posiziono un frame di dati all'interno dell'elenco. Quindi quando provate ad estrarlo di nuovo - ottengo tutti i nomi di colonna prefissati con la chiave di elenco per questo frame di dati, c'è un modo per estrarre il frame di dati esattamente come è stato passato inizialmente?R estrarre il data frame dalla lista senza prefissi nei nomi delle colonne

cols<-c("column1", "Column2", "Column3") 
df1<-data.frame(matrix(ncol = 3, nrow = 1)) 
colnames(df1)<-cols 
df1 

result<-list() 
result['df1']<-list(df1) 

newdf1<-as.data.frame(result['df1']) 
newdf1 

ottiene come risultato (i nomi delle colonne hanno il prefisso DF1):

> cols<-c("column1", "Column2", "Column3") 
> df1<-data.frame(matrix(ncol = 3, nrow = 1)) 
> colnames(df1)<-cols 
> df1 
    column1 Column2 Column3 
1  NA  NA  NA 
> 
> result<-list() 
> result['df1']<-list(df1) 
> 
> newdf1<-as.data.frame(result['df1']) 
> newdf1 
    df1.column1 df1.Column2 df1.Column3 
1   NA   NA   NA 

Naturalmente, posso rimuovere i prefissi manualmente, ma probabilmente c'è un modo corretto di fare questo. Grazie!

risposta

15

estratto utilizzando [[ piuttosto che [:

> newdf1 <- as.data.frame(result[['df1']]) 
> newdf1 
    column1 Column2 Column3 
1  NA  NA  NA 

La differenza è che [ estrae un elenco contenente il componente richiesto (s). [[ estrae direttamente il componente richiesto (cioè recupera il contenuto di quel componente della lista, non una lista contenente quel componente).

Ma, come già df1è un frame di dati, perché non basta fare:

newdf1 <- result[['df1']] 

? Non è necessaria la parte as.data.frame().

+0

bello, in questo caso non ho nemmeno bisogno di conversione di tipo as.data.frame() in quanto è già data.frame restituito. Thx – Volder

+0

@Volder Sì, l'ho appena aggiunto. Sono contento che ci abbia aiutato. –

Problemi correlati