从列表列创建具有唯一值的列
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'对应的每一个元素,去掉NA
(na.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
我在 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'对应的每一个元素,去掉NA
(na.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