2013-03-24 4 views
8

Я размещаю кадр данных внутри списка. Затем, когда вы пытаетесь извлечь его обратно, я получаю все имена столбцов, префиксные с помощью ключа списка для этого фрейма данных, есть ли способ извлечь кадр данных точно так же, как он был изначально принят?R кадр данных из списка без префиксов в именах столбцов

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 

Получить в результате (имена столбцов с префиксом 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 

Конечно, я могу удалить префиксы вручную, но, вероятно, есть правильный способ сделать это. Спасибо!

ответ

15

экстракт использование [[, а не [:

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

Разница заключается в том, что [ извлекает список, содержащий требуемый компонент (ы). [[ извлекает запрошенный компонент напрямую (т. Е. Извлекает содержимое этого компонента списка, а не список, содержащий этот компонент).

Но df1 уже является кадром данных, почему бы не просто сделать:

newdf1 <- result[['df1']] 

? Вам не нужна часть as.data.frame().

+0

Приятно, в этом случае мне даже не нужно преобразовывать тип as.data.frame(), поскольку он уже возвращает data.frame. Thx – Volder

+0

@Volder Да, я просто добавил это. Рад, что это помогло. –

 Смежные вопросы

  • Нет связанных вопросов^_^