将setdiff结果存储在数据框单元格中

时间:2020-03-30 19:10:39

标签: r dplyr set-difference rowwise

这是我的例子:

library(dplyr)
my_df <- data.frame( col_1 = I(list(c(1,2), 1 )), col_2 = c(1,2))
my_df <- my_df %>% rowwise(diff = setdiff(col_1, col_2))

它生成错误:

Error in rowwise(., diff = setdiff(col_1, col_2)) : 
  unused argument (diff = setdiff(col_1, col_2))

出了什么问题以及如何解决?有什么想法吗?

更新:不好,我只是忘记添加mutate

my_df <- data.frame( col_1 = I(list(c(1,2), 1 )), col_2 = c(1,2))
my_df <- my_df %>% rowwise() %>% mutate(diff = setdiff(col_1, col_2))

1 个答案:

答案 0 :(得分:1)

选项为map2,因为两列均为list

library(dplyr)
library(purrr)
my_df %>%
     mutate(diff = map2(col_1, col_2, setdiff))

或者如果我们需要使用rowwise

my_df %>%
    rowwise %>% 
    mutate(diff = setdiff(col_1, col_2))