说我有一个整数
x <- as.integer(442009)
Run Code Online (Sandbox Code Playgroud)
或字符串
y <- "a10ba3m1"
Run Code Online (Sandbox Code Playgroud)
如何消除任何长度的整数/字符串的最后两位数/字符?
substr 返回子串:
substr(x, 1, nchar(x)-2)
# [1] "4420"
substr(y, 1, nchar(y)-2)
# [1] "a10ba3"
Run Code Online (Sandbox Code Playgroud)
如果您知道该值是整数,则可以将其除以100并转换回整数(去掉小数部分)。这可能比将其转换为字符串然后返回的效率更高。
> x <- as.integer(442009)
> floor(x/100)
[1] 4420
Run Code Online (Sandbox Code Playgroud)
如果您只想删除字符串的最后2个字符,则substr可以使用。
或者,这是一个能很好执行的正则表达式(效率不如substr:
> y <- "a10ba3m1"
> sub("..$", "", y)
[1] "a10ba3"
Run Code Online (Sandbox Code Playgroud)
如果要从字符串中删除最后两位数字(不是任何字符),并且不能保证最后两位数字位于最后两位,那么这是一个有效的正则表达式:
> sub("[0-9]?([^0-9]*)[0-9]([^0-9]*)$", "\\1\\2", y)
[1] "a10bam"
Run Code Online (Sandbox Code Playgroud)
如果您想删除最多2位出现在最后的数字(但如果后面有任何非数字,则不要删除),请使用以下正则表达式:
> sub("[0-9]{1,2}$", "", y)
[1] "a10ba3m"
Run Code Online (Sandbox Code Playgroud)