
数据结构
|
147
#> [[3]]
#> [1] "Curly"
compact(lst) # Remove NULL element
#> [[1]]
#> [1] "Moe"
#>
#> [[2]]
#> [1] "Curly"
实际上,在应用一些转换后,我们也可以在列表中最终得到 NULL 项。
请注意,在 R 中,NA 和 NULL 不是一回事。compact 函数将从列表中删除 NULL 但不
删除 NA。要删除 NA 值,请参阅 5.13 节。
5.12.4 另请参阅
有关如何移除列表元素,请参阅 5.10 节;有关如何有条件地移除列表元素,请参见 5.13 节。
5.13 使用条件来移除列表元素
5.13.1 问题
需要按照条件检验从列表中删除元素,例如删除未定义的元素、负数或小于某个阈值的元素。
5.13.2 解决方案
从一个函数开始,当满足条件时返回TRUE,否则返回FALSE。然后使用purrr 中的
discard 函数删除符合条件的值。例如,以下代码段使用 is.na 函数从 lst 中删除 NA 值:
lst <- list(NA, 0, NA, 1, 2)
lst %>%
discard(is.na)
#> [[1]]
#> [1] 0
#>
#> [[2]]
#> [1] 1
#>
#> [[3]]
#> [1] 2
5.13.3 讨论
discard 函数用一个
逻辑值函数
为参数来删除列表中的某些元素,discard 函数是返
回 TRUE 或 FALSE 的函数。discard 函数应用于列表的每个元素。如果 ...