从R中的字符串中提取数字后缀

时间:2015-03-09 17:27:43

标签: r string character

我有这个角色矢量:

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.

非常感谢

2 个答案:

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