我遇到了一个应该很简单的问题。可能是一个正则表达式问题。我是新手。请考虑一个字符串向量,例如:
species_location<-c('Homo_sapiens_Lausanne_Switzerland', 'Solenopsis_invicta_California_US', 'Rattus_novaborensis_Copenhagen_Denmark', 'Candida_albicans_Crotch_Home')
我想最终得到一个看起来像物种的新载体:
c(Homo_sapiens, Solenopsis_invicta, Rattus_novaborensis, Candida_albicans)
目前我正在使用以下功能:
str_extract_all(species_location,'^(\\S+?)_(\\S+?)_')
然而,它返回前3个单词而不是我为它设计的单词。我无法弄清楚为什么。请任何人帮忙解释一下吗?感谢
更新: 对于路过的人来说,上面输入的代码可以正常工作,除了我的R OS for Mac OS 3.0.0,R.app 1.60。我仍然不知道那里有什么问题,但可能有兴趣让别人检查。将尝试在这里添加图片。
答案 0 :(得分:5)
只需依赖stringr
包。
library(stringr)
species_location<-c('Homo_sapiens_Lausanne_Switzerland', 'Solenopsis_invicta_California_US', 'Rattus_novaborensis_Copenhagen_Denmark', 'Candida_albicans_Crotch_Home')
word(species_location, 1,2, sep="_")
答案 1 :(得分:2)
我们可以使用str_extract
str_extract(species_location, "[^_]+_[^_]+")