2016-12-08 3 views
0

У меня есть вектор строк «x», который был основан на более длинной строке «mystring» (фактическая длина x неизвестна).R: создание комбинаций элементов вектора слева направо

mystring <- "this is my vector" 
x <- strsplit(mystring, " ")[[1]] 

Ищу элегантный способ создания объекта (например, список) , который содержит следующие строки:

string1 
string1 + string2 
string1 + string2 + string3 
string1 + string2 + string3 + string 4 
string2 
string2 + string3 
etc.: 

"this" 
"this is" 
"this is my" 
"this is my vector" 
"is" 
"is my" 
"is my vector" 
"my" 
"my vector" 
"vector" 

Спасибо большое!

ответ

2

Похоже, вы хотите построить ngrams! Есть много способов сделать это; вы можете рассмотреть библиотеку tokenizers.

Например, предположим, что вы хотите, п-г 1 до 4.

library(tidyverse) 
library(tokenizers) 
mystring <- "this is my vector" 
map(1:4, ~tokenize_ngrams(mystring, lowercase = FALSE, n = .x)) %>% 
    unlist 
#> [1] "this"    "is"    "my"    
#> [4] "vector"   "this is"   "is my"    
#> [7] "my vector"   "this is my"  "is my vector"  
#> [10] "this is my vector" 
Смежные вопросы