如何从嵌套列表中正确省略NA?

a b*_*der 4 r

我正在使用列表列表 - 让我们称之为L- 在R中,其中子列表的长度都相同并且用NA填充.理想情况下,我想从每个子列表中删除NA元素,我想出的一个解决方案是L <- lapply(L, na.omit).它似乎几乎可以工作; 但是,对于每个子列表,行为都是这样的,例如,

[[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    
Run Code Online (Sandbox Code Playgroud)

[[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"
Run Code Online (Sandbox Code Playgroud)

我有点困惑,说实话 - attr()我的清单中的额外内容是什么?那里有解决方案,不会将它们附加到列表中吗?我试过了na.exclude,但它给出了相同的结果.有什么我想念的吗?提前致谢 : )

Jos*_*ich 8

没有理由感到困惑......细节部分?na.omit说:

如果'na.omit'删除了案例,则案例的行号构成结果的'"na.action"'属性,类'"省略"'.

尝试用每个列表元素进行子集化is.na:

L <- lapply(L, function(x) x[!is.na(x)])
Run Code Online (Sandbox Code Playgroud)