r - 将范围之外的值转换为范围的边界

标签 r vector

如果我有一系列值

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/

相关文章:

r - 如何计算数据框中的行均值?

删除具有特定名称的列表元素

模板类型参数的 C++ 常量

c++ - 分配的结构包含 vector 的内存泄漏

r - r 中 NA 的时间序列的增强迪基富勒检验

r - 从矩阵中提取最大组的独立列

css - R Shiny : change colour of individual check boxes in checkboxGroupInput

c++ - 在成对的 vector 中查找元素的索引

c - C 中的堆排序,索引 0 问题

c++ - 在 C++ 列表中按字母顺序插入字符串