tôi có một danh sách với cấu trúc ví dụ sau:Flatten một danh sách với phức tạp cấu trúc lồng nhau
> dput(test)
structure(list(id = 1, var1 = 2, var3 = 4, section1 = structure(list(
var1 = 1, var2 = 2, var3 = 3), .Names = c("var1", "var2",
"var3")), section2 = structure(list(row = structure(list(var1 = 1,
var2 = 2, var3 = 3), .Names = c("var1", "var2", "var3")),
row = structure(list(var1 = 4, var2 = 5, var3 = 6), .Names = c("var1",
"var2", "var3")), row = structure(list(var1 = 7, var2 = 8,
var3 = 9), .Names = c("var1", "var2", "var3"))), .Names = c("row",
"row", "row"))), .Names = c("id", "var1", "var3", "section1",
"section2"))
> str(test)
List of 5
$ id : num 1
$ var1 : num 2
$ var3 : num 4
$ section1:List of 3
..$ var1: num 1
..$ var2: num 2
..$ var3: num 3
$ section2:List of 3
..$ row:List of 3
.. ..$ var1: num 1
.. ..$ var2: num 2
.. ..$ var3: num 3
..$ row:List of 3
.. ..$ var1: num 4
.. ..$ var2: num 5
.. ..$ var3: num 6
..$ row:List of 3
.. ..$ var1: num 7
.. ..$ var2: num 8
.. ..$ var3: num 9
Chú ý rằng danh sách section2
chứa các yếu tố được đặt tên rows
. Chúng đại diện cho nhiều bản ghi. Những gì tôi có là một danh sách lồng nhau trong đó một số phần tử ở cấp cơ sở và những phần tử khác là nhiều bản ghi lồng nhau cho cùng một quan sát. Tôi muốn đầu ra sau trong một định dạng data.frame
:
> desired
id var1 var3 section1.var1 section1.var2 section1.var3 section2.var1 section2.var2 section2.var3
1 1 2 4 1 2 3 1 4 7
2 NA NA NA NA NA NA 2 5 8
3 NA NA NA NA NA NA 3 6 9
yếu tố gốc cấp nên cư hàng đầu tiên, trong khi row
yếu tố nên có hàng riêng của họ. Là một biến chứng thêm, số lượng biến trong các mục nhập row
có thể thay đổi.
Tại sao bạn muốn kết quả mong muốn này? Điều đó có vẻ như một định dạng dữ liệu bất tiện để làm việc. – A5C1D2H2I1M1N2O1R2T1
Tôi đang thực hiện một yêu cầu xà phòng trả về một bảng html với một cấu trúc rất lồng nhau trong một danh sách lồng nhau. Tôi không chắc chắn lý do tại sao bạn nghĩ rằng đầu ra mong muốn là bất tiện. Nó tạo lại bảng html ở định dạng data.frame và điền vào các giá trị NA trong đó một mục mở rộng nhiều hàng. – Zelazny7
Bạn có thể cung cấp thêm một hoặc hai trường hợp thử nghiệm vì bạn đã thêm tiền thưởng vào trường hợp này chưa.Bạn đề cập đến rằng bạn đang tìm kiếm một giải pháp "chung", vì vậy sẽ rất tốt nếu có khả năng biết được những kịch bản nào khác cần được tính toán. – A5C1D2H2I1M1N2O1R2T1