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



我有一个大的数据框架,其中一列& scientificName"有不同的学名和他们的作者。其中一些名字是混合的,用"×"在前面(注意,这是乘法符号x,而不是标准文本x)。有些混合动力车在名称的第一个单词前面有这个符号,但我只对那些在第二个单词前面有这个符号的人感兴趣(例如"Rosa ×obtusa Ripart"我要做的是浏览"物种"一栏并删除第二个单词开头的所有符号,并将_x(纯文本"x")附加到同一单词的结尾,即

Rosa ×obtusa Ripart ->Rosa obtusa_x Ripart

我从

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

,但我把自己绑在结里,试图只选择第二个单词,更不用说删除和添加字符了。

感谢您的帮助!这里的玩具数据集(只有第三个条目应该被修改):

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附加到它们后面,从中删除×