Объединить предыдущие и последние слова со словом, которое соответствует условию в R - PullRequest
3 голосов
/ 25 октября 2019

Мне нужно объединить предыдущие и последние слова слова встречи условия. В частности, те, которые соответствуют условию наличия запятой.

vector <- c("Paulsen", "Kehr,", "Diego",    "Schalper", "Sepúlveda,", "Diego")

#I know how to get which elements meet my condition:

grepl(",", vector)
#[1] FALSE  TRUE FALSE FALSE  TRUE FALSE 

Желаемый вывод:

print(vector_ok)
#[1] "Paulsen Kehr, Diego", "Schalper Sepúlveda, Diego"

Заранее спасибо!

1 Ответ

1 голос
/ 25 октября 2019

Вы можете использовать grep(), чтобы получить положения строк с запятой, развернуть их до последовательности +/- 1 и использовать это для индексации, а затем свернуть исходный вектор.

idx <- grep(",", vector)
seqs <- Map(`:`, idx-1, idx+1)
sapply(seqs, function(x) paste(vector[x], collapse = " "))

[1] "Paulsen Kehr, Diego"       "Schalper Sepúlveda, Diego"
...