我有这个角色矢量:
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
换句话说,我需要一个函数来返回一个显示后缀的数字向量(每个后缀都是1或2位长)。请注意,我需要一些可以使用更多数量的字符串的东西,这些字符串在中间可能有也可能没有数字。数字后缀的范围为1到99.
非常感谢
答案 0 :(得分:5)
只需使用gsub
:
> gsub(".*?([0-9]+)$", "\\1", variables)
[1] "1" "1" "4" "4" "5" "6" "11" "12" "2"
如果您希望将结果作为数字,请将其包裹在as.numeric
中。
答案 1 :(得分:3)
您可以使用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
匹配从开头到最后一位非数字字符的所有字符。用空字符串替换那些匹配的字符将为您提供所需的输出。