如果我有一系列值
set.seed(123)
x <- rnorm(100)
和给定范围(a,b),例如
a <- -1; b <- 2
如何将小于 a
的值移至 a
,将大于 b
的值移至 b
?
以下基本方法有效,但我正在搜索函数或单行命令。
x[x < a] <- a
x[x > b] <- b
最佳答案
如果我们需要单行,请使用pmin/pmax
out <- pmin(pmax(x, a), b)
-检查
x[x < a] <- a
x[x > b] <- b
identical(out, x)
[1] TRUE
关于r - 将范围之外的值转换为范围的边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72689471/