2013-03-24 11 views
8

Umieszczam ramkę danych na liście. Następnie przy próbie wyodrębnienia go - otrzymuję przedrostek wszystkich nazw kolumn z kluczem listy dla tej ramki danych, czy istnieje sposób wyodrębnienia ramki danych dokładnie tak, jak został przekazany początkowo?R wyodrębnij ramkę danych z listy bez prefiksów w nazwach kolumn

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 

Get wyniku (nazwy kolumn są poprzedzone 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 

Oczywiście, mogę ręcznie usunąć prefiksy, ale prawdopodobnie nie jest to właściwy sposób to zrobić. Dzięki!

Odpowiedz

15

Mieszaninę ekstrahowano [[ zamiast [:

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

Różnica polega na tym, że [ wyodrębnia listę zawierającą żądany składnik (ów). [[ wyodrębnia żądany komponent bezpośrednio (to jest pobiera zawartość tego składnika listy, a nie listę zawierającą ten składnik).

Ale jak df1 już jest ramka danych, dlaczego nie po prostu zrobić:

newdf1 <- result[['df1']] 

? Nie potrzebujesz części as.data.frame().

+0

miło, w tym przypadku nie potrzebuję nawet konwersji typu as.data.frame(), ponieważ jest już zwracana data.frame. Thx – Volder

+0

@Volder Tak, właśnie to dodałem. Cieszę się, że to pomogło. –

Powiązane problemy