在R中拆分数字

在R中拆分数字,r,R,在R中,我有一个数字,比如说1293828893,叫做x 我希望拆分此数字,以便删除中间的4位数字3828,并返回它们,伪代码如下: splitnum <- function(number){ #check number is 10 digits if(nchar(number) != 10){ stop("number not of right size"); } middlebits <- middle 4 digits

R
中,我有一个数字,比如说
1293828893
,叫做
x

我希望拆分此数字,以便删除中间的4位数字
3828
,并返回它们,伪代码如下:

splitnum <- function(number){
     #check number is 10 digits
     if(nchar(number) != 10){
          stop("number not of right size");
     }
     middlebits <- middle 4 digits of number
     return(middlebits);
}

splitnum只需使用整数除法:

> x <- 1293828893
> (x %/% 1e3) %% 1e4
[1] 3828
>x(x%/%1e3)%%%1e4
[1] 3828

这是一个完全避免将数字转换为字符的函数

splitnum <- function(number){
     #check number is 10 digits
     if(trunc(log10(X))!=9) {
          stop("number not of right size")
     }
     (number %/% 1e3) %% 1e4
}

splitnum(1293828893)
# [1] 3828
splitnum您可以使用
substr()
。请参阅其帮助页面
?substr
。在你的职责范围内,我会:

splitnum <- function(number){
    #check number is 10 digits
    stopifnot(nchar(number) == 10)
    as.numeric(substr(number, start = 4, stop = 7))
}
删除要将数字作为字符串的最后一行上的
as.numeric(..)
换行符

> splitnum(1293828893)
[1] 3828