#r #dplyr
#r #dplyr
Вопрос:
Я пытаюсь заставить 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()
не используется.
Ответ №1:
Мы могли бы использовать 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=";")))
Ответ №2:
Попробуйте:
tribble(
~col,
c("a", "b", "c"),
c("a", "d", "f")
) %>%
rowwise() %>%
mutate(new = toString(combn(col, 2, FUN = paste, collapse = ";")))