Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 匹配R中的第一个数字_Regex_R_Sorting - Fatal编程技术网

Regex 匹配R中的第一个数字

Regex 匹配R中的第一个数字,regex,r,sorting,Regex,R,Sorting,有人知道一种很好的方法来匹配和分类R中数字的前n位吗 比如说, 123451 123452 123461 123462 在这种情况下,如果我们匹配前n=1-4位,我们将得到所有相同的组。如果我们匹配n=5个数字,我们将得到2组 我考虑过这样做,把数字向量变成一个字符向量,把它分割成一个元素,然后把每个数字截断成n个数字,然后根据这些数字进行匹配;然而,我有很多数字,似乎有更好的方法来对R中数字的前n位进行排序。有什么想法吗 谢谢 这是一个矢量化解决方案,不涉及到字符转换: nums <-

有人知道一种很好的方法来匹配和分类R中数字的前n位吗

比如说,

123451
123452
123461
123462
在这种情况下,如果我们匹配前n=1-4位,我们将得到所有相同的组。如果我们匹配n=5个数字,我们将得到2组

我考虑过这样做,把数字向量变成一个字符向量,把它分割成一个元素,然后把每个数字截断成n个数字,然后根据这些数字进行匹配;然而,我有很多数字,似乎有更好的方法来对R中数字的前n位进行排序。有什么想法吗


谢谢

这是一个矢量化解决方案,不涉及到字符转换:

nums <- c(123451,
          123452,
          123461,
          123462)

firstDigits <- function(x, n) {
    ndigits <- floor(log10(x)) + 1
    floor(x / 10^(ndigits - n))
}

factor(firstDigits(nums, 4))
## [1] 1234 1234 1234 1234
## Levels: 1234
factor(firstDigits(nums, 5))
## [1] 12345 12345 12346 12346
## Levels: 12345 12346
factor(firstDigits(nums, 6))
## [1] 123451 123452 123461 123462
## Levels: 123451 123452 123461 123462

nums您可以使用
?子字符串
。然而,你期望结果如何?我不确定你想匹配什么。你可能会对
lappy(c(4,5),substr,x=x,start=1)
感兴趣,其中
x
是原始向量。啊!好主意@RichardScriven谢谢!