如何从R中的字符串中提取版本号
How to extract version number from String in R
使用 R、stringr 或任何其他包,我如何根据此规则获取版本号:
看到“v”时开始,看到“_”或“”时结束
这是一个例子
example <- c("daata v2.0 jkdfajfkdal fdadjfk 398432", "data 432 dfafd v4.0_ dfakfld")
我要:
ex2 <- c("v2.0", "v4.0")
非常感谢!
我们可以在 base R
中使用 regexpr/regmatches
来匹配 v
后跟一个或多个数字 (\d+
) 后跟一个点 (.
) 和一位或多位数字
regmatches(example, regexpr("v[0-9]+(\.[0-9]+)?", example))
#[1] "v2.0" "v4.0"
这里我们假设所有的元素都有这个模式。如果他们没有模式,那么 regexpr
return 是一个 -1 的索引,因此我们得不到与之对应的值。因此,在我们执行 regmatches
之前,应该更改那些 -1
或使用索引到 return,无论它是 -1 还是 NA。但是一个更简单的选择是 str_extract
which returns NA
where there are no match
library(stringr)
str_extract(example, "v[0-9]+(\.[0-9]+)?")
使用 R、stringr 或任何其他包,我如何根据此规则获取版本号:
看到“v”时开始,看到“_”或“”时结束
这是一个例子
example <- c("daata v2.0 jkdfajfkdal fdadjfk 398432", "data 432 dfafd v4.0_ dfakfld")
我要:
ex2 <- c("v2.0", "v4.0")
非常感谢!
我们可以在 base R
中使用 regexpr/regmatches
来匹配 v
后跟一个或多个数字 (\d+
) 后跟一个点 (.
) 和一位或多位数字
regmatches(example, regexpr("v[0-9]+(\.[0-9]+)?", example))
#[1] "v2.0" "v4.0"
这里我们假设所有的元素都有这个模式。如果他们没有模式,那么 regexpr
return 是一个 -1 的索引,因此我们得不到与之对应的值。因此,在我们执行 regmatches
之前,应该更改那些 -1
或使用索引到 return,无论它是 -1 还是 NA。但是一个更简单的选择是 str_extract
which returns NA
where there are no match
library(stringr)
str_extract(example, "v[0-9]+(\.[0-9]+)?")