如何从R中的字符串中提取版本号
使用R、stringr或任何其他软件包如何使用此规则获取版本号: 当您看到“v”时开始,当您看到“\u1”或“”时结束 这里有一个例子如何从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
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]+)?")