我正在尝试使combn()
在dplyr::mutate
中工作,但是我失败了,无法完全弄清楚为什么。
这有效:
c("a", "b", "c") %>% combn(2, FUN = paste, collapse = ";", simplify = TRUE)
[1] "a;b" "a;c" "b;c"
但是我该如何做呢?
tribble(
~col,
c("a", "b", "c"),
c("a", "d", "f")
) %>%
mutate(col = combn(str_split(names, ";"), 2, FUN = paste, collapse = ";"))
我希望矩阵中的每一行都是这种形式的字符向量:
[1] "a;b" "a;c" "b;c"
上面的示例将是第一行。
编辑:如果不使用combn()
,我想很好。
答案 0 :(得分:2)
我们可以使用map
来遍历list
和paste
library(tidyverse)
out <- tribble(
~col,
c("a", "b", "c"),
c("a", "d", "f")
) %>%
mutate(col = map(col, ~ combn(.x, 2, FUN = paste, collapse=";")))
答案 1 :(得分:1)
尝试:
tribble(
~col,
c("a", "b", "c"),
c("a", "d", "f")
) %>%
rowwise() %>%
mutate(new = toString(combn(col, 2, FUN = paste, collapse = ";")))