从R中的字符串中提取数字后缀
extract numerical suffixes from strings in R
我有这个字符向量:
variables <- c("ret.SMB.l1", "ret.mkt.l1", "ret.mkt.l4", "vix.l4", "ret.mkt.l5" "vix.l6", "slope.l11", "slope.l12", "us2yy.l2")
期望的输出:
> suffixes(variables)
[1] 1 1 4 4 5 6 11 12 2
换句话说,我需要一个函数,它将 return 一个显示后缀(每个后缀为 1 或 2 位数字)的数字向量。请注意,我需要一些可以处理更多字符串的东西,这些字符串可能在中间某处有也可能没有数字。数字后缀的范围是 1 到 99。
非常感谢
只需使用gsub
:
> gsub(".*?([0-9]+)$", "\1", variables)
[1] "1" "1" "4" "4" "5" "6" "11" "12" "2"
如果您希望结果为数字,请将其包裹在 as.numeric
中。
您可以使用 sub
功能。
> variables <- c("ret.SMB.l1", "ret.mkt.l1", "ret.mkt.l4", "vix.l4", "ret.mkt.l5" ,"vix.l6", "slope.l11", "slope.l12", "us2yy.l2")
> sub(".*\D", "", variables)
[1] "1" "1" "4" "4" "5" "6" "11" "12" "2"
.*\D
匹配从开始到最后一个非数字字符的所有字符。用空字符串替换那些匹配的字符将为您提供所需的输出。
我有这个字符向量:
variables <- c("ret.SMB.l1", "ret.mkt.l1", "ret.mkt.l4", "vix.l4", "ret.mkt.l5" "vix.l6", "slope.l11", "slope.l12", "us2yy.l2")
期望的输出:
> suffixes(variables)
[1] 1 1 4 4 5 6 11 12 2
换句话说,我需要一个函数,它将 return 一个显示后缀(每个后缀为 1 或 2 位数字)的数字向量。请注意,我需要一些可以处理更多字符串的东西,这些字符串可能在中间某处有也可能没有数字。数字后缀的范围是 1 到 99。
非常感谢
只需使用gsub
:
> gsub(".*?([0-9]+)$", "\1", variables)
[1] "1" "1" "4" "4" "5" "6" "11" "12" "2"
如果您希望结果为数字,请将其包裹在 as.numeric
中。
您可以使用 sub
功能。
> variables <- c("ret.SMB.l1", "ret.mkt.l1", "ret.mkt.l4", "vix.l4", "ret.mkt.l5" ,"vix.l6", "slope.l11", "slope.l12", "us2yy.l2")
> sub(".*\D", "", variables)
[1] "1" "1" "4" "4" "5" "6" "11" "12" "2"
.*\D
匹配从开始到最后一个非数字字符的所有字符。用空字符串替换那些匹配的字符将为您提供所需的输出。