r - 将前后单词连接到与 R 中的条件匹配的单词

标签 r regex stringr grepl

我需要连接满足条件的词的前一个词和后一个词。具体来说,那些符合逗号条件的人。

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"

提前致谢!

最佳答案

您可以使用 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"

关于r - 将前后单词连接到与 R 中的条件匹配的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58551389/

相关文章:

regex - 在 R 中使用 stringr 提取特定单词周围的单词样本

r - ggplot 中的面板透明度

r - 在 R 中解析嵌套的父子 json

c# - 提交 url 时不带任何特殊字符

string - 将字符向量拆分为单个字符? (与粘贴或 stringr::str_c 相反)

正则表达式双列匹配 R

r - 如何在 case_when 语句中指定列范围以检查 R 中的条件?

r - 热图透明度、着色和特异性不令人满意

javascript - 使用换行符在行尾隐藏字符

regex - vim:显示子匹配内容和替换中的未命名寄存器