将前一个单词和后一个单词连接到与R中的条件匹配的单词

问题描述 投票:4回答:2

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

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"

提前感谢!

r regex stringr grepl
2个回答
1
投票

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

1
投票

一个dplyr选项可以是:

df %>%
 group_by(grp = gl(n()/3, 3)) %>%
 summarise(vector = paste0(vector, collapse = " ")) %>%
 ungroup() %>%
 select(-grp)

[它假设在其他两个词之间总有一个词带有,

  vector                   
  <chr>                    
1 Paulsen Kehr, Diego      
2 Schalper Sepúlveda, Diego

样本数据:

df <- data.frame(vector = c("Paulsen", "Kehr,", "Diego", "Schalper", "Sepúlveda,", "Diego"),
           stringsAsFactors = FALSE)
© www.soinside.com 2019 - 2024. All rights reserved.