Как мне написать функцию для преобразования символьного вектора в символьный вектор уникальных пар его элементов?

#r #purrr #stringr

#r #муррр #stringr

Вопрос:

Какими будут входные данные:

 c("a", "b", "c")
[1] "a" "b" "c"
 

Мне нужна функция, которая возвращает:

 [1] "a;b" "a;c" "b;c"
 

Мне нужно, чтобы эта функция работала исключительно на своих входных данных. Я пробовал кое-что с purrr::map() помощью and purrr::reduce() , но мне не удалось получить ничего полезного.

Ответ №1:

Мы можем использовать combn from base R с FUN аргументом как paste

 combn(x, 2, FUN = paste, collapse = ";")
#[1] "a;b" "a;c" "b;c"
 

данные

 x <- c("a", "b", "c")
 

Комментарии:

1. Отлично, даже не знал combn() , что существует! Спасибо!

Ответ №2:

Не точный результат, но, возможно, это может быть полезно:

 test<-c("a", "b", "c")
lapply(test,function(x) paste0(x,";",setdiff(test,x)))
 

Результат:

 [[1]]
[1] "a;b" "a;c"

[[2]]
[1] "b;a" "b;c"

[[3]]
[1] "c;a" "c;b"