我对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不是一个好主意imho。为了最大限度地提高效率,我不想使用循环。
提前感谢您的任何反馈。
答案 0 :(得分:2)
你可以做到
rowSums(X > Y)
# [1] 0 2