我有一列值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位数字,我需要将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)
我认为最简单,最快的方法是使用grep
和正则表达式来匹配数字:
x<-as.character(c("C(1)", "C(2)", "C(3)"))
vec <- grep(pattern="[[:digit:]]", x=x)
vec
# Output:
1 2 3