从列表列创建具有唯一值的列

Create a Column with Unique values from Lists Columns

我在 Rstudio 上有一个由列组成的数据集,列中包含列表。这是一个示例,其中“a”列和“c”列的每一行都包含列表。

¿我在找什么?

我需要创建一个新列来从 a b 和 c 列中收集唯一值并跳过 NA 或空值

预期结果 是列“desired_result”。

 test <- tibble(a = list(c("x1","x2"), c("x1","x3"),"x3"),
               b = c("x1", NA,NA),
               c = list(c("x1","x4"),"x4","x2"),
               desired_result = list(c("x1","x2","x4"),c("x1","x3","x4"),c("x2","x3")))

到目前为止我尝试了什么?

我尝试了以下操作,但没有产生“desired_result

列中的预期结果
test$attempt_1_ <-lapply(apply((test[, c("a","b","c"), drop = T]),
MARGIN = 1, FUN= c, use.names= FALSE),unique)

我们可以用pmap遍历'a'到'c'对应的每一个元素,去掉NAna.omit)得到unique 值作为 list 存储在 'desired_result'

library(dplyr)
library(purrr)
test <- test %>% 
    mutate(desired_result2 = pmap(across(a:c), ~ sort(unique(na.omit(c(...))))))

-检查 OP 的预期

> all.equal(test$desired_result, test$desired_result2)
[1] TRUE