如果我想将数据框中的每个值四舍五入到最接近的值集,例如c(0, 1)
。我该怎么做呢?
>toRound <- c(-2, 3, 4, 1, -1, 0, .5)
>magicFunction(toRound, c(0, 1))
c(0, 1, 1, 1, 0, 0, 1)
>magicFunction(toRound, c(-1, 1))
c(-1, 1, 1, 1, -1, round(runif(1,min=0,max=1), 0), 1)
答案 0 :(得分:2)
尝试
toRound <- c(-2, 3, 4, 1, -1, 0, .5)
ifelse(toRound > 1, 1, ifelse(toRound < 0, 0, round(toRound)))
[1] 0 1 1 1 0 0 0
作为一个功能:
foo <- function(x, Min, Max) ifelse(x > Max, Max, ifelse(x < Min, Min, round(x)))
foo(toRound, -1, 1)
[1] -1 1 1 1 -1 0 0
请注意,在我的系统上,.5会四舍五入为较小的整数。如果你想要四舍五入 - 你的预期输出建议 - 你可以使用这篇文章中给出的解决方案Round up from .5 in R