2011-10-27 32 views
4

私はリストリストを使っています - サブリストのすべてが同じ長さのNで埋め込まれたRでLと呼んでいます。理想的には、各サブリストからNA要素だけを削除したいのですが、私が思いついた解決策はL <- lapply(L, na.omit)です。それはほぼ作品のようです;余分なattr() sの最大何だ - しかし、各サブリストについては、動作は例えば、ネストされたリストからNAsを正しく削除するにはどうすればよいですか?

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

なり、ようなものですそれは私のリストにありますか?それらをリストに追加しないソリューションはありますか?私はna.excludeを試しましたが、同じ結果が得られます。私は行方不明のものがありますか?事前のおかげで:困惑する)

答えて

8

ない理由... ?na.omitの詳細セクションは言う:「na.omit」のケースを削除する場合

、例行番号は「」 を形成します結果のna.action "'属性、クラス'" omit "'の属性。

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

L <- lapply(L, function(x) x[!is.na(x)]) 
+0

D'OH!ありがとう - 私はそれを試してみましょう。 –

3

別のソリューションを使用して高階関数

lapply(L, Filter, f = Negate(is.na))