R 在字符向量列表的两列上成对执行setdiff
我有一个数据帧,它有一列1,这是一个嵌套的字符向量列表。第2列是另一个类似的列表。我想定义第3列,其中每个字符向量的元素出现在第1列中,而不是第2列中 像这样:R 在字符向量列表的两列上成对执行setdiff,r,list,dplyr,R,List,Dplyr,我有一个数据帧,它有一列1,这是一个嵌套的字符向量列表。第2列是另一个类似的列表。我想定义第3列,其中每个字符向量的元素出现在第1列中,而不是第2列中 像这样: c1 c2 new c c('a', 'b') c('b', 'd') 'a' 我尝试映射setdiff: my.tibble = tibble( c1 = list(c('a', 'b'), c('b', 'c')), c2 = list(c('d', 'e'), c('e', 'f')) ) my.tibble = my
c1 c2 new c
c('a', 'b') c('b', 'd') 'a'
我尝试映射setdiff:
my.tibble = tibble(
c1 = list(c('a', 'b'), c('b', 'c')),
c2 = list(c('d', 'e'), c('e', 'f'))
)
my.tibble = my.tibble %>%
mutate(
new.c = map(c1, ~ setdiff(., c2))
)
my.tibble$new.c
它完整地复制了c1
如果我按行操作,它看起来像是为c2中向量中的每个值运行setdiff
my.tibble = my.tibble %>%
rowwise() %>%
mutate(
new.c = map(c1, ~ setdiff(., c2))
)
my.tibble$new.c
我怀疑我被列表结构搞糊涂了,但我不确定是怎么搞的。不是最好的例子,因为
col1
和col2
中没有重叠,但我猜你在寻找map2
library(dplyr)
library(purrr)
my.tibble %>% mutate(new.c = map2(c1, c2, setdiff))
或Map
位于底部R
my.tibble$new.c <- Map(setdiff, my.tibble$c1, my.tibble$c2)
my.tibble$new.c不是共享的最佳示例,因为col1
和col2
中没有重叠,但我猜您正在寻找map2
library(dplyr)
library(purrr)
my.tibble %>% mutate(new.c = map2(c1, c2, setdiff))
或Map
位于底部R
my.tibble$new.c <- Map(setdiff, my.tibble$c1, my.tibble$c2)
my.tibble$new.c