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