Как я могу заставить combn работать в dplyr::mutate?

#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 = ";")))