2013-03-24 54 views
8

Tôi đặt một khung dữ liệu bên trong danh sách. Sau đó, khi cố gắng giải nén nó trở lại - tôi nhận được tất cả các tên cột được đặt trước với khóa danh sách cho khung dữ liệu này, có cách nào để trích xuất khung dữ liệu chính xác như nó đã được chuyển ban đầu không?R trích xuất khung dữ liệu từ danh sách không có tiền tố trong tên cột

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 

Nhận kết quả là (tên cột được bắt đầu với 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 

Tất nhiên, tôi có thể loại bỏ các tiền tố bằng tay, nhưng có lẽ đó là một cách thích hợp để làm điều này. Cảm ơn!

Trả lời

15

Extract sử dụng [[ hơn [:

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

Sự khác biệt là [ trích ra một danh sách có chứa các thành phần yêu cầu (s). [[ trích xuất trực tiếp thành phần được yêu cầu (tức là nó lấy nội dung của thành phần đó trong danh sách, không phải danh sách chứa thành phần đó).

Nhưng khi df1 đã một khung dữ liệu, tại sao không chỉ làm:

newdf1 <- result[['df1']] 

? Bạn không cần phần as.data.frame().

+0

tốt đẹp, trong trường hợp này tôi thậm chí không cần chuyển đổi kiểu as.data.frame() vì nó đã được data.frame trả về. Thx – Volder

+0

@Volder Vâng, tôi vừa thêm nó. Vui mừng nó đã giúp. –

Các vấn đề liên quan