2013-03-24 9 views
8

Ich platziere einen Datenrahmen in der Liste. Wenn ich dann versuche, es zurück zu extrahieren - bekomme ich alle Spaltennamen mit dem vorangestellten Listenschlüssel für diesen Datenrahmen, gibt es eine Möglichkeit, den Datenrahmen genau so zu extrahieren, wie er anfänglich übergeben wurde?R Datenrahmen aus Liste ohne Präfixe in Spaltennamen extrahieren

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 

Als Ergebnis erhalten (Spaltennamen mit DF1 Präfix):

> 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 

Natürlich kann ich die Präfixe manuell entfernen, aber wahrscheinlich gibt es eine richtige Art und Weise, dies zu tun. Danke!

Antwort

15

Extrakt mittels [[ statt [:

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

Der Unterschied besteht darin, dass eine Liste [ extrahiert die angeforderten Komponente (n) enthält. [[ extrahiert die angeforderte Komponente direkt (d.h. sie ruft den Inhalt dieser Komponente der Liste ab, nicht eine Liste, die diese Komponente enthält).

Aber wie df1 bereits ist ein Datenrahmen, warum nicht einfach tun:

newdf1 <- result[['df1']] 

? Sie brauchen den as.data.frame() Teil nicht.

+0

schön, in diesem Fall brauche ich nicht einmal Typ Konvertierung as.data.frame(), da es bereits data.frame zurückgegeben wird. Thx – Volder

+0

@Volder Ja, ich habe das gerade hinzugefügt. Froh, dass es geholfen hat. –

Verwandte Themen