使用 dplyr 从向量列中删除 NA 元素

Remove NA elements from column of vectors using dplyr

我正在尝试将列合并为一列,我使用 pmap 将它们组合在一起。

有些列有 NA,我想从组合列中删除​​ NA col_comb 并保留其他值。

df = tribble(~id, ~col1, ~col2, ~col3,
             1, "a", "b", "c",
             2, "a", NA, "c",
             3, "a", NA, NA,
             4, NA, NA, NA)
df = df %>% 
  mutate(col_comb = pmap(list(col1,col2,col3), c)) 

我们可以指定一个 lambda 函数来执行此操作

library(dplyr)
library(purrr)
df1 <- df %>% 
    mutate(col_comb = pmap(select(., starts_with('col')), 
             ~  as.character(na.omit(c(...)))))

-输出

df1$col_comb
#[[1]]
#[1] "a" "b" "c"

#[[2]]
#[1] "a" "c"

#[[3]]
#[1] "a"

#[[4]]
#character(0)

或者另一种选择是 c_acrossrowwise

df %>% 
  rowwise %>% 
  mutate(col_comb = list(na.omit(c_across(-id)))) %>% 
  ungroup