在 R 中查找以某个字符开头的单词,删除该字符并在末尾添加其他字符

Find words beginning with a certain character, remove that character and add other characters to the end, in R

我有一个大数据框,其中一列“scientificName”有各种科学名称及其作者。其中一些名称是混合名称,前面用“×”表示(注意这是乘法符号 ×,不是标准文本 x)。一些杂交种在名称的第一个单词前面有符号,但我只对第二个单词前面有符号的符号感兴趣(例如“Rosa ×obtusa Ripart” 我想做的是通过“物种”列并删除第二个单词开头的所有符号,并将 _x(纯文本“x”)附加到 end同一个词,即

蔷薇 ×obtusa Ripart -> 蔷薇 obtusa_x Ripart

我从

开始
df$scientificName[str_detect(df$scientificName, "×")]

但为了只选择第二个单词而陷入困境,更不用说删除和添加字符了。

感谢收到任何帮助! Toy数据集在这里(只修改第三个条目):

df <- data.frame(stuff=c("hybrids", "are", "annoying"), scientificName=c("×Conyzigeron huelsenii (Vatke) Rauschert","Viola wittrockiana Koppert", "Rosa ×obtusa Ripart"))

使用sub你可以试试:

sub('^(\w+)\s(×)(\w+)', '\1 \3_x', df$scientificName)

#[1] "×Conyzigeron huelsenii (Vatke) Rauschert"
#[2] "Viola wittrockiana Koppert"              
#[3] "Rosa obtusa_x Ripart"         `

对于第二个单词中包含 × 的字符串,提取 × 之后的字符并附加 _x 从中删除 ×