ネストされたリストからNAsを適切に省略するにはどうすればよいですか?

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    

〜になる

[[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"

私はちょっと思っています。正直なところ、私のリストには余分な attr()などがありますか?それらをリストに追加しないソリューションはありますか?私は na.exclude を試しましたが、同じ結果が得られます。私は行方不明のものがありますか?前もって感謝します : )

4

2 答え

想像する理由はありません... ?na.omit の詳細セクションには、

'na.omit'が大文字と小文字を削除すると、大文字と小文字の行番号が   '' na.action ''属性、クラス '"omit"'の結果を返します。

is.na で各リスト要素をサブセット化してみてください:

L <- lapply(L, function(x) x[!is.na(x)])
8
追加された
D'oh!ありがとう - 私はそれを試してみましょう。
追加された 著者 a barking spider,

高次関数を使用する別のソリューション

lapply(L, Filter, f = Negate(is.na))
3
追加された