我需要将条件满足词的前一个词和后一个词连接起来。具体来说,就是那些符合逗号条件的人。
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"
一个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)