使用str_extract_all只提取R中的前两个单词?

Sci*_*ist 1 regex r vector subset

我遇到了一个应该很简单的问题.可能是一个正则表达式问题.我是新手.请考虑一个字符串向量,例如:

species_location<-c('Homo_sapiens_Lausanne_Switzerland', 'Solenopsis_invicta_California_US', 'Rattus_novaborensis_Copenhagen_Denmark', 'Candida_albicans_Crotch_Home')
Run Code Online (Sandbox Code Playgroud)

我想最终得到一个新的物种矢量,看起来像:

c(Homo_sapiens, Solenopsis_invicta, Rattus_novaborensis, Candida_albicans)
Run Code Online (Sandbox Code Playgroud)

目前我正在使用以下功能:

str_extract_all(species_location,'^(\\S+?)_(\\S+?)_')
Run Code Online (Sandbox Code Playgroud)

然而,它返回前三个单词而不是我为它设计的单词.我无法弄清楚为什么.请任何人帮忙解释一下吗?谢谢

更新:对于路过的人,上面输入的代码可以正常工作,除了我的R OS for Mac OS 3.0.0,R.app 1.60.我仍然不知道那里有什么问题,但可能有兴趣让别人检查.将尝试在这里添加图片.对正则表达式的不寻常解释

yok*_*ota 6

只是依靠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="_")
Run Code Online (Sandbox Code Playgroud)