4

NA私はそれらのいくつかが例えばであるリストのリストを持っていますempty lists。データで満たされたすべてのリストを抽出し、であるすべてのリストを削除したいと思いますempty(NA)

私が試しているコードは次のとおりです。

lapply(outputfile,function(x){
  if(outputfile != NA){
  test<-lapply(outputfile,unlist)
}})

しかし、これは機能しません。

リストのリストは次のようになります:(ランダムデータの小さな例)

list(NA, NA, NA, NA, NA, NA, list(c(5, 5, 5, 5, 5, 5, 5, 5, 5, 
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5)))

5が含まれているリストのみを抽出したい。最初の6つのリストは無視する必要があります(例:削除)。

どんな助けでも大歓迎です

4

1 に答える 1

10

したがって、最初のレベルで削除するには、直接NA使用できます。is.na

l[!is.na(l)]

Filterまたは、 whichを使用して、評価された関数の結果を論理に強制し、TRUEに評価された要素を返すこともできます。たとえば、次のようにすることができます。

Filter(function(x) !is.na(x), l)

(または)同等に(@flodelがコメントの下に書いているように)

Filter(Negate(is.na), l)
于 2013-03-08T11:43:00.533 に答える