Tôi có danh sách phức tạp bao gồm các danh sách và khung dữ liệu khác. Tôi cần đơn giản hóa danh sách này để chỉ bao gồm các khung dữ liệu - vì vậy mỗi danh sách cấp hai phải được đưa vào các khung dữ liệu cấp đầu tiên riêng biệt.Chuyển danh sách danh sách phức tạp thành danh sách khung dữ liệu
Đây là tái sản xuất ví dụ:
dd<-data.frame(x=1:3,y=4:6)
l1<-list(dd,list(dd,dd))
#original list
l1
[[1]]
x y
1 1 4
2 2 5
3 3 6
[[2]]
[[2]][[1]]
x y
1 1 4
2 2 5
3 3 6
[[2]][[2]]
x y
1 1 4
2 2 5
3 3 6
Result tôi cần để có được
l2<-list(dd,dd,dd)
l2
[[1]]
x y
1 1 4
2 2 5
3 3 6
[[2]]
x y
1 1 4
2 2 5
3 3 6
[[3]]
x y
1 1 4
2 2 5
3 3 6
Tôi đã thử với chức năng unlist()
và lập luận recursive=FALSE
nhưng trong trường hợp đầu tiên khung dữ liệu cấp độ này được chuyển thành hai vectơ .
unlist(l1,recursive=FALSE)
$x
[1] 1 2 3
$y
[1] 4 5 6
[[3]]
x y
1 1 4
2 2 5
3 3 6
[[4]]
x y
1 1 4
2 2 5
3 3 6
Cảm ơn! Tôi đã suy nghĩ mọi lúc theo hướng ngược lại - cách chia danh sách danh sách. Ý tưởng chuyển đổi khung dữ liệu thành danh sách khung dữ liệu rất tuyệt. –
Tôi sẽ cố gắng tránh 'class (x) ==" data.frame "' và sử dụng 'is.data.frame' để thay thế. – shadow
không chắc chắn vấn đề ở đây là gì để tránh sử dụng nó. bạn có thể xây dựng được không? 'is.data.frame' sử dụng' inherits' nội bộ và nó cung cấp TRUE cho các đối tượng bắt nguồn từ 'data.frame'. Ví dụ trên 'data.table' là tốt. Nếu đó là mong muốn, thì có, sử dụng 'kế thừa' là tốt hơn. – Arun