mylist <- list(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
123, NULL, 456)
> mylist
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
[[4]]
NULL
[[5]]
NULL
[[6]]
NULL
[[7]]
NULL
[[8]]
NULL
[[9]]
NULL
[[10]]
NULL
[[11]]
[1] 123
[[12]]
NULL
[[13]]
[1] 456
Danh sách của tôi có 13 phần tử, 11 trong số đó là NULL. Tôi muốn loại bỏ chúng, nhưng vẫn giữ nguyên các chỉ số của các phần tử không trống.R: xóa phần tử NULL khỏi danh sách
mylist2 = mylist[-which(sapply(mylist, is.null))]
> mylist2
[[1]]
[1] 123
[[2]]
[1] 456
này loại bỏ các yếu tố NULL tốt, nhưng tôi không muốn các yếu tố không rỗng được lập chỉ mục, tức là, tôi muốn mylist2
để trông giống như thế này, nơi mà các chỉ số của các mục không rỗng được bảo toàn.
> mylist2
[[11]]
[1] 123
[[13]]
[1] 456
Ai đó có thể tìm thấy một cách, nhưng tôi nghĩ rằng bạn đang rơi vào cái bẫy "Tại sao nó in theo cách đó". Các số chỉ mục này không phải là tên của các phần tử danh sách của bạn. Không có tên. Kiểm tra 'tên (danh sách của tôi)'. Vì vậy, họ chỉ là những người trợ giúp cho thấy vị trí trong danh sách các yếu tố. Đó là lý do tại sao bạn gặp khó khăn khi yêu cầu R trả lại vị trí thứ 11 của danh sách chỉ với hai phần tử. Bạn có thể thử đặt tên cho danh sách dưới dạng câu trả lời bên dưới. –