2012-01-30 42 views
6

Tôi có danh sách data.frames và tôi tự hỏi liệu có một cách lập chỉ mục dễ dàng để nhận tất cả các cột thứ ba của tất cả các dữ liệu.frames hay không. Hoặc tất cả các cột có tên là x? Phát biểu R:Danh sách lập chỉ mục của dữ liệu.frames - cách lấy tất cả các cột x-th?

lapply(names(mylist),function(x) mylist[[x]][,3]) 

Có cách nào để làm điều đó bằng cách chỉ cần lập chỉ mục, như mylist [[]] [3]? (Mà không làm việc rõ ràng)

EDIT: Và làm thế nào để bạn làm điều đó, khi bạn muốn sử dụng một chức năng như nlevels trong đó, như

lapply(names(mylist),function(x) nlevels(mylist[[x]][,3])) 

cho rằng cột 3 là một yếu tố.

Trả lời

9

Có lẽ đây là một chút dễ dàng hơn:

lapply(mylist, "[[", 3) 
lapply(mylist, "[[", name_of_column) 
+0

+1 thực sự. không biết bạn có thể sử dụng đối số thứ hai của lapply như thế. bóng bẩy. Nhưng mặt khác có nghĩa là không có cách nào chỉ sử dụng chỉ mục? –

+0

Ý bạn là gì khi "chỉ mục"? – kohske

+0

danh sách của tôi [[]] [, 3], một cái gì đó như thế này nếu nó sẽ hoạt động. Không sử dụng bất kỳ vòng lặp hoặc áp dụng nào. –

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