Tôi đang cố gắng chia danh sách lồng nhau theo biến nhóm. Vui lòng xem xét cấu trúc sau:Tách và điều chỉnh danh sách lồng nhau
> str(L1)
List of 2
$ names:List of 2
..$ first: chr [1:5] "john" "lisa" "anna" "mike" ...
..$ last : chr [1:5] "johnsson" "larsson" "johnsson" "catell" ...
$ stats:List of 2
..$ physical:List of 2
.. ..$ age : num [1:5] 14 22 53 23 31
.. ..$ height: num [1:5] 165 176 179 182 191
..$ mental :List of 1
.. ..$ iq: num [1:5] 102 104 99 87 121
Bây giờ tôi cần phải tạo ra hai danh sách, trong đó sử dụng cả hai L1$names$last
để ghép, kết quả là L2
và L3
xem bên dưới:
L2: Kết quả phân nhóm theo L1$names$last
> str(L2)
List of 3
$ johnsson:List of 2
..$ names:List of 1
.. ..$ first: chr [1:2] "john" "anna"
..$ stats:List of 2
.. ..$ physical:List of 2
.. .. ..$ age : num [1:2] 14 53
.. .. ..$ height: num [1:2] 165 179
.. ..$ mental :List of 1
.. .. ..$ iq: num [1:2] 102 99
$ larsson :List of 2
..$ names:List of 1
.. ..$ first: chr [1:2] "lisa" "steven"
..$ stats:List of 2
.. ..$ physical:List of 2
.. .. ..$ age : num [1:2] 22 31
.. .. ..$ height: num [1:2] 176 191
.. ..$ mental :List of 1
.. .. ..$ iq: num [1:2] 104 121
$ catell :List of 2
..$ names:List of 1
.. ..$ first: chr "mike"
..$ stats:List of 2
.. ..$ physical:List of 2
.. .. ..$ age : num 23
.. .. ..$ height: num 182
.. ..$ mental :List of 1
.. .. ..$ iq: num 87
L3: Mỗi nhóm chỉ cho phép một lần xuất hiện L1$names$last
List of 2
$ 1:List of 2
..$ names:List of 2
.. ..$ first: chr [1:3] "john" "lisa" "mike"
.. ..$ last : chr [1:3] "johnsson" "larsson" "catell"
..$ stats:List of 2
.. ..$ physical:List of 2
.. .. ..$ age : num [1:3] 14 22 23
.. .. ..$ height: num [1:3] 165 176 182
.. ..$ mental :List of 1
.. .. ..$ iq: num [1:3] 102 104 87
$ 2:List of 2
..$ names:List of 2
.. ..$ first: chr [1:2] "anna" "steven"
.. ..$ last : chr [1:2] "johnsson" "larsson"
..$ stats:List of 2
.. ..$ physical:List of 2
.. .. ..$ age : num [1:2] 53 31
.. .. ..$ height: num [1:2] 179 191
.. ..$ mental :List of 1
.. .. ..$ iq: num [1:2] 99 121
`ve đã cố gắng áp dụng this solution, nhưng có vẻ như điều này sẽ không làm việc cho các danh sách lồng nhau.
mã thể sanh sản:
L1 <- list("names" = list("first" = c("john","lisa","anna","mike","steven"),"last" = c("johnsson","larsson","johnsson","catell","larsson")),"stats" = list("physical" = list("age" = c(14,22,53,23,31), "height" = c(165,176,179,182,191)), "mental" = list("iq" = c(102,104,99,87,121))))
L2 <- list("johnsson" = list("names" = list("first" = c("john","anna")),"stats" = list("physical" = list("age" = c(14,53), "height" = c(165,179)), "mental" = list("iq" = c(102,99)))), "larsson" = list("names" = list("first" = c("lisa","steven")),"stats" = list("physical" = list("age" = c(22,31), "height" = c(176,191)), "mental" = list("iq" = c(104,121)))), "catell" = list("names" = list("first" = "mike"),"stats" = list("physical" = list("age" = 23, "height" = 182), "mental" = list("iq" = 87))))
L3 <- list("1" = list("names" = list("first" = c("john","lisa","mike"),"last" = c("johnsson","larsson","catell")),"stats" = list("physical" = list("age" = c(14,22,23), "height" = c(165,176,182)), "mental" = list("iq" = c(102,104,87)))), "2" = list("names" = list("first" = c("anna","steven"),"last" = c("johnsson","larsson")),"stats" = list("physical" = list("age" = c(53,31), "height" = c(179,191)), "mental" = list("iq" = c(99,121)))))
EDIT: Xin lưu ý rằng các số liệu thực tế là khá lớn và nhiều hơn nữa lồng nhau sâu sắc hơn so với ví dụ được cung cấp.
dữ liệu của bạn có vẻ rất có cấu trúc, tức là hình chữ nhật, tại sao bạn không sử dụng khung dữ liệu – rawr
Tôi không xem xét điều đó khi tạo dữ liệu mẫu. Dữ liệu thực tế tôi đang làm việc với các thay đổi động và không nhất thiết là hình chữ nhật. –
Bạn có thể cung cấp ví dụ trong đó các vectơ không phải danh sách không có cùng độ dài không? Cùng với kết quả mong muốn cuối cùng? –