如何从R中的字符串中提取版本号

如何从R中的字符串中提取版本号,r,string,stringr,R,String,Stringr,使用R、stringr或任何其他软件包如何使用此规则获取版本号: 当您看到“v”时开始,当您看到“\u1”或“”时结束 这里有一个例子 example <- c("daata v2.0 jkdfajfkdal fdadjfk 398432", "data 432 dfafd v4.0_ dfakfld") 示例我们可以在base R中使用regexpr/regmatches来匹配v,后跟一个或多个数字(\\d+),后跟一个点()和一个或多个数字 r

使用R、stringr或任何其他软件包如何使用此规则获取版本号:

当您看到“v”时开始,当您看到“\u1”或“”时结束

这里有一个例子

example <- c("daata v2.0 jkdfajfkdal fdadjfk 398432", "data 432 dfafd v4.0_ dfakfld")

示例我们可以在
base R
中使用
regexpr/regmatches
来匹配
v
,后跟一个或多个数字(
\\d+
),后跟一个点(
)和一个或多个数字

regmatches(example, regexpr("v[0-9]+(\\.[0-9]+)?", example))
#[1] "v2.0" "v4.0"
这里我们假设所有的元素都有这个模式。如果它们没有模式,那么
regexpr
返回一个-1的索引,因此我们不会得到对应的值。因此,在执行
regmatches
之前,应该更改那些
-1
,或者使用索引将-1作为NA返回。但是一个更简单的选择是
stru extract
,它返回不匹配的
NA

library(stringr)
str_extract(example, "v[0-9]+(\\.[0-9]+)?")

这是伟大的,但什么是没有“?比如,如果在同一个向量中同时存在v2和v2.0,并且您想同时提取?@Mr.Biggums,那么,只需将其包装在
()
中,然后添加
@Mr.Biggums试试
示例您就是那个人!我唯一的另一个问题是,有一些观察结果与此不匹配,我只想要某种na或其他东西,因为我需要将提取的字符串追加回原始数据集中
library(stringr)
str_extract(example, "v[0-9]+(\\.[0-9]+)?")