从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 匹配从开始到最后一个非数字字符的所有字符。用空字符串替换那些匹配的字符将为您提供所需的输出。