gpt4 book ai didi

regex - 从右侧删除零并在数字左侧添加一些?

转载 作者:行者123 更新时间:2023-12-01 23:10:21 26 4
gpt4 key购买 nike

假设我有以下向量

test<- c(374500, 2270400)

首先我想删除零,以获得类似的东西:

test2<- c(3745, 22704)

然后,我想在左边添加零以获得 6 位数字。那部分我知道该怎么做:

test3 <- formatC(test2, width = 6, format = "d", flag = "0")

你能帮我迈出第一步吗?

最佳答案

你可以使用正则表达式:

as.integer(sub("0*$", "", test))
# [1] 3745 22704

另外,这里有一个有趣的递归:

remove_zeroes <- function(x) {
x <- as.integer(x)
i <- x %% 10L == 0
if (any(i)) {
x[i] <- x[i] / 10L
Recall(x)
} else x
}
remove_zeroes(c(123, 1230, 1230000))
# [1] 123 123 123

基准测试:

test <- sample.int(1e5)
library(microbenchmark)
microbenchmark(
as.integer(sub("0*$", "", test)),
as.integer(sub("0+$", "", test)),
remove_zeroes(test))
# Unit: milliseconds
# expr min lq median uq max neval
# as.integer(sub("0*$", "", test)) 134.51669 138.91855 141.28812 145.96486 170.93705 100
# as.integer(sub("0+$", "", test)) 113.91206 118.83564 123.42199 126.44162 179.03642 100
# remove_zeroes(test) 38.01125 47.45385 49.79928 54.87592 89.05354 100

关于regex - 从右侧删除零并在数字左侧添加一些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26079893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com