Ichki qismdagi ro'yxatlardan NAlarni qanday qilib to'g'ri joylashtirish mumkin?

I'm working with a list of lists - let's call it L - in R, where the sub-lists are all the same length & padded with NAs. Ideally, I'd like to remove just the NA elements from each sublist, and one solution I've come up with is L <- lapply(L, na.omit). It seems to almost work; however, for each sub-list, the behavior is such that, for example,

[[1]]
[1] "0"     "12345"  "12346"  "12347" "12348"  "12349"  "12340"  "12341"  "12342" NA      NA          NA      NA      NA      NA     

[16] NA      NA      NA      NA      NA      NA      NA      NA      NA      NA      NA    

bo'ladi

[[1]]
[1] "0"     "12345"  "12346"  "12347" "12348"  "12349"  "12340"  "12341"  "12342"
attr(,"na.action")
[1] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
attr(,"class")
[1] "omit"

Men bir oz bezovta edim, halol bo'lish uchun - qo'shimcha attr() ni va mening ro'yxatimda nima bor? Ularni ro'yxatga qo'shmaslik uchun u erda echim bormi? na.exclude ni sinab ko'rdim, lekin u xuddi shu natijani beradi. Men yo'qolgan narsa bormi? Oldindan rahmat : )

4

2 javoblar

Hech qanday sabab bo'lmasligi uchun ... na.omit ning tafsilotlar bo'limida shunday deyilgan:

Agar "na.omit" holatlarini bartaraf etsa, holatlarning qatorlari   '' Na.action '' natija xislati, klassi '' tashlanmaydigan ''.

is.na bilan har bir ro'yxat elementini quyi sinab ko'ring:

L <- lapply(L, function(x) x[!is.na(x)])
8
qo'shib qo'ydi
D'oh! Rahmat - men uni sinab ko'raman.
qo'shib qo'ydi muallif a barking spider, manba

Yuqori darajadagi funktsiyalarni ishlatadigan boshqa yechim

lapply(L, Filter, f = Negate(is.na))
3
qo'shib qo'ydi