Мы могли бы разделить «имена» по пробелам, циклически перебирая разделенные элементы list
, получить комбинацию слов, выбирающих по два одновременно и unnest
list
library(tidyverse)
df %>%
mutate(tokens = strsplit(names, " ") %>%
map(~ .x %>%
combn(m = 2, simplify = FALSE))) %>%
unnest
Если нам нужны два отдельных столбца «токенов», то мы paste
combn
начинаем слова вместе, затем unnest
и separate
«токены» на два столбца, разделяя их на разделитель, который былиспользуется для paste
объединения вместе
df %>%
mutate(tokens = strsplit(names, " ") %>%
map(~ .x %>%
combn(m = 2, FUN = function(x)
paste(x[1], x[2], sep="-"), simplify = FALSE))) %>%
unnest %>%
unnest %>%
separate(tokens, into = c('tokens1', 'tokens2'))
# names tokens1 tokens2
#1 perform data cleansing perform data
#2 perform data cleansing perform cleansing
#3 perform data cleansing data cleansing
#4 information categorisation information categorisation
#5 write batch record documentation write batch
#6 write batch record documentation write record
#7 write batch record documentation write documentation
#8 write batch record documentation batch record
#9 write batch record documentation batch documentation
#10 write batch record documentation record documentation
data
df <- structure(list(names = c("perform data cleansing",
"information categorisation",
"write batch record documentation")), class = "data.frame",
row.names = c("1", "2", "3"))