如何从R中的字符中提取数字

How to extract numbers from character in R

我有一列的值为 C(1)、C(2)、...C(30)、C(31),我只需要提取数字。

x<-as.character(c("C(1)", "C(2)", "C(3)"))

a<-as.numeric(substr(x,3,3))

substr() 没有帮助,因为对于 2 位数字我需要 substr 3 和 4 值。

您可以使用正则表达式删除所有非数字字符。这可以使用不同的函数来完成。我喜欢用stringr包来处理字符:

library(stringr)

x <- as.character(c("C(1)", "C(2)", "C(3)"))

# Replace all non numerical characters to a empty space
y <- str_replace_all(x, "[^0-9]", "" )

a <- as.numeric(y)

我认为最简单和最快的方法是使用正则表达式来匹配数字:

x <- as.character(c("C(1)", "C(2)", "C(30)"))
vec <- as.numeric(regmatches(x, regexpr("\d+", x)))
vec
# Output:
1 2 30