61

character(0)などの長さゼロのペアリストを含むリストから空の要素を削除するにはどうすればよいですか integer(0)...

list2
# $`hsa:7476`
# [1] "1","2","3"
# 
# $`hsa:656`
# character(0)
#
# $`hsa:7475`
# character(0)
#
# $`hsa:7472`
# character(0)

私はそれらに対処する方法がわかりません。NULLそれがはるかに単純であれば、私は意味します。hsa:7476リストに残るようにこれらの要素を削除するにはどうすればよいですか。

4

5 に答える 5

48

要素の長さ > 0 のインデックスを保持することによる別のオプション(より効率的だと思います):

l[lapply(l,length)>0] ## you can use sapply,rapply

[[1]]
[1] 1 2 3

[[2]]
[1] "foo"
于 2013-09-26T09:12:23.650 に答える
15

完全を期すために、有名なtidyversepurrrパッケージには、リストを操作するための便利な関数がいくつかあります。compact%>%

l <- list(1:3, "foo", character(0), integer(0))
library(purrr)
compact(l)
# [[1]]
# [1] 1 2 3
#
# [[2]]
# [1] "foo"

また

list(1:3, "foo", character(0), integer(0)) %>% compact
于 2017-03-31T17:52:06.777 に答える
13

lengths()リスト要素の長さを定義するために使用します。

l <- list(1:3, "foo", character(0), integer(0))
l[lengths(l) > 0L]
#> [[1]]
#> [1] 1 2 3
#> 
#> [[2]]
#> [1] "foo"
#> 
于 2015-12-10T11:23:49.317 に答える