【问题标题】:extract list element names with NA using purrr::keep使用 purrr::keep 提取带有 NA 的列表元素名称
【发布时间】:2020-12-11 17:02:15
【问题描述】:

我想提取列表中NA 元素的names

library(tidyverse)
mlist <- lst(p1 = data.frame(a = c(1, NA)),
            p2 = NA,
            p3 = data.frame(b = c(NA, "test")),
            p4 = NA,
            p5 = c(1, 2, NA))
mlist
# $p1
#    a
# 1  1
# 2 NA

# $p2
# [1] NA

# $p3
#      b
# 1 <NA>
# 2 test

# $p4
# [1] NA

# $p5
# [1]  1  2 NA

我发现最简单的方法是使用base

names(mlist)[is.na(mlist)]
#[1] "p2" "p4"

但我最初尝试使用purrr::keep 来执行此操作,但我仍然很好奇如何执行此操作。我认为这会起作用:

map(mlist, ~keep(is.na(.))) %>% names()

任何简单的解决方案?

谢谢

【问题讨论】:

    标签: r purrr


    【解决方案1】:

    我们可以直接使用keep

    library(purrr)
    keep(mlist, ~ all(is.na(.x))) %>%
           names
    #[1] "p2" "p4"
    

    或者使用管道的另一个选项是

    mlist %>%
         is.na %>% 
         which %>% 
         names
    #[1] "p2" "p4"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      相关资源
      最近更新 更多