在 R 中将数字四舍五入到最接近的值(具有不同的间隔)
Rounding numbers to the nearest values (with different intervals) in R
我想舍入(或替换)a
中的数字
a <- c(0.505, 1.555, 2.667, 53.850, 411.793)
到 b
中最接近的值:
b <- c(0, 5, 10, 50, 100, 200, 500)
输出将是这样的:
a_rnd <- c(0, 0, 5, 50, 500)
逻辑很简单,但我找不到任何解决方案,因为我找到的所有方法都要求 b
中的值具有相等的间隔!
我怎样才能做到这一点?
您可以使用 sapply
遍历 a
的所有值并使用这些索引提取正确的 b
值
b[sapply(a, function(x) which.min(abs(x - b)))]
#> [1] 0 0 5 50 500
这是一个比较简单的方法:
b[apply(abs(outer(a, b, "-")), 1, which.min)]
我想舍入(或替换)a
a <- c(0.505, 1.555, 2.667, 53.850, 411.793)
到 b
中最接近的值:
b <- c(0, 5, 10, 50, 100, 200, 500)
输出将是这样的:
a_rnd <- c(0, 0, 5, 50, 500)
逻辑很简单,但我找不到任何解决方案,因为我找到的所有方法都要求 b
中的值具有相等的间隔!
我怎样才能做到这一点?
您可以使用 sapply
遍历 a
的所有值并使用这些索引提取正确的 b
值
b[sapply(a, function(x) which.min(abs(x - b)))]
#> [1] 0 0 5 50 500
这是一个比较简单的方法:
b[apply(abs(outer(a, b, "-")), 1, which.min)]