r - findInterval() 的向量化

标签 r vectorization intervals

我在使用 R 函数 findInterval() 时遇到以下问题

给定一个向量 X 和一个矩阵 Y,我想找到 X 的元素位于哪个区间。区间被构造,在 Y 行中有断点。换句话说,对于 X = c(2,3) 和 Y = 矩阵(c(3,1,4,2,5,4),2,3),输出将为 c(0,2)。我写了以下代码:

X <- c(2,3)
Y <- matrix(c(3,1,4,2,5,4),2,3)

output <- diag(apply(Y,1,function(z)findInterval(X,z)))

并且它有效。然而,我认为,它可以被优化,因为 apply 函数返回 2 x 2 矩阵(这就是为什么我必须得到它的对角线)。有没有办法做同样的事情,但是使用函数,它将返回一个向量,以我的向量 X 和矩阵 Y 作为参数?我对高维向量执行此操作,因此获得不必要的大小为 10000 x 10000 的矩阵并不是一个好主意。为了最大限度地提高效率,我不想使用循环。

预先感谢您的任何反馈。

最佳答案

你可以做到

rowSums(X > Y)
# [1] 0 2

关于r - findInterval() 的向量化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27472948/

相关文章:

json - 从R将数据导入Elastic Search

python - 创建一个 Numpy 矩阵,存储输入 ndarray 的打乱版本

python - 将 n 个 3x3 旋转矩阵的数组与 3 个向量的 3d 数组相乘

algorithm - 向量化搜索包含给定子排列(带重复)的排列(带重复)

mysql 一张表中的不同时间间隔

r - 对存储在字符向量中的每个数据帧名称应用函数

r - 如何将 R ggplot 复制到剪贴板?

c - 在 C 中每 x 秒执行一个方法

javascript - ClearInterval() 不会停止我的旋转功能

debugging - 如何获取R脚本出错时的行号?