说我有一个整数
x <- as.integer(442009)
或字符串
y <- "a10ba3m1"
如何消除一般任意长度的整数/字符串的最后两位数/字符?
答案 0 :(得分:6)
substr
返回子字符串:
substr(x, 1, nchar(x)-2)
# [1] "4420"
substr(y, 1, nchar(y)-2)
# [1] "a10ba3"
答案 1 :(得分:4)
如果您知道该值是一个整数,那么您可以除以100并转换回整数(删除小数部分)。这可能比将其转换为字符串然后回来更有效。
> x <- as.integer(442009)
> floor(x/100)
[1] 4420
如果您只想删除字符串的最后2个字符,那么substr
可以正常工作。
或者,这里也是一个正则表达式(效率低于substr
:
> y <- "a10ba3m1"
> sub("..$", "", y)
[1] "a10ba3"
如果你想从字符串中删除最后2位数字(不是任何字符),并且最后2位数不能保证在最后2位,那么这是一个有效的正则表达式:
> sub("[0-9]?([^0-9]*)[0-9]([^0-9]*)$", "\\1\\2", y)
[1] "a10bam"
如果你想删除最后出现的最多2位数字(但如果有任何非数字后面没有,那么请使用这个正则表达式:
> sub("[0-9]{1,2}$", "", y)
[1] "a10ba3m"