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
Moja lista zawiera 13 elementów, z których 11 ma wartość NULL. Chciałbym je usunąć, ale zachować indeksy elementów, które są niepuste.R: usuwanie elementów NULL z listy
mylist2 = mylist[-which(sapply(mylist, is.null))]
> mylist2
[[1]]
[1] 123
[[2]]
[1] 456
Usuwa NULL elementy dobrze, ale nie chcę elementy niepuste być przeindeksowane, tj chcę mylist2
aby wyglądać tak, gdzie indeksy niepustych wpisy są zachowane.
> mylist2
[[11]]
[1] 123
[[13]]
[1] 456
Ktoś może znaleźć sposób, ale myślę, że wpadasz w pułapkę "Dlaczego to jest drukowanie w ten sposób". Te numery indeksów nie są nazwami elementów listy. Nie ma nazw. Sprawdź 'names (mylist)'. Są po prostu pomocnikami pokazującymi, gdzie na liście znajdują się pierwiastki. Właśnie dlatego masz problem z nakazaniem R, aby zwrócił 11 pozycję listy z tylko dwoma elementami. Możesz spróbować nazwać listę jako odpowiedź poniżej. –