所有组成员,但当前行

Roy*_*lTS 7 r dplyr

我有一个分组数据框,如下所示:

df <- data.frame(group = rep(1:4, each=3),
                 lets = rep(LETTERS[1:4], times=3))
Run Code Online (Sandbox Code Playgroud)

对于每一行,我现在想要识别letslets行本身之外的同一组中的所有行.使用dplyr我可以得到所有 lets:

df %>%
  group_by(group) %>%
  mutate(all_lets_in_group = paste(lets, collapse=','))
Run Code Online (Sandbox Code Playgroud)

但是,如何从我输入的内容中排除lets当前行paste()

lib*_*orm 4

这个任务的目的不是很清楚,因此代码的清晰度也会受到影响,但仍然:

library(tidyverse)

df %>%
  group_by(group) %>%
  mutate(
    all_lets_in_group = lets %>% 
      map(function(l) setdiff(., l)) %>%
      map_chr(function(x) paste(x, collapse=',')))
Run Code Online (Sandbox Code Playgroud)

使用集合操作从组的集合setdiff中减去 提供的当前字母purrr::map,然后使用 重新格式化向量列表并paste返回为字符向量。