2015-02-03 67 views
7

Tôi là người mới bắt đầu sử dụng R và tôi bị kẹt trong vấn đề này. Tôi đã có một dataframe và bằng cách sử dụng sự chia rẽ() chức năng tôi đã tạo ra một danh sách các dataframes, ví dụ:lấy cột từ danh sách các khung dữ liệu R

dfList <- split(mtcars, mtcars$cyl) 

Bây giờ tôi muốn lấy một cột của một dataframe cụ thể, ví dụ cột 2 từ dataframe 1, vì vậy, chẳng hạn như

dfList[1][2] 

Những gì tôi có thể làm ngay bây giờ là tạo for vòng để vào bên trong cấu trúc dữ liệu. Nhưng tôi không thể tìm thấy một oneliner để làm điều đó, nếu nó tồn tại. Làm thế nào tôi có thể làm điều đó? Cảm ơn trước!

+5

Hãy thử 'lapply (dfList, '[[', 2)'. Nếu bạn cần nó như một ma trận 'sapply (dfList, '[[', 2)' – akrun

+3

Có lẽ bạn muốn sử dụng 'dfList [[1]] [2]'? Đây là một ví dụ để bạn kiểm tra: 'lst <- split (mtcats, mtcars $ cyl)' và sau đó 'lst [[1]] [2]'. –

Trả lời

7

Tôi đang đặt nhận xét của docendo ở đây để đóng câu hỏi.

Nếu bạn muốn trích xuất phần tử từ danh sách (và xử lý nó như một data.frame) thay vì đặt một danh sách (để tạo danh sách nhỏ hơn), bạn cần sử dụng cú pháp [[ ]]. Ngoài ra, để lấy cột theo chỉ mục từ data.frame, bạn cần phải sử dụng [[ idx ]] hoặc [, idx ]. Đây là các hoạt động lập chỉ mục khá cơ bản mà bạn có thể muốn xem lại nếu bạn sẽ lập trình trong R. Vì vậy, cuộc gọi "chính xác" của bạn có thể là

dfList[[1]][[2]] 
Các vấn đề liên quan