R 逻辑问题:较长的对象长度不是较短对象长度的倍数 ( dplyr::if_else() )

R logical issue: longer object length is not a multiple of shorter object length ( dplyr::if_else() )

我不确定如何使用 if_else() 之外的其他方法修改我的代码并保持其效率。这是我的原始代码的一个简单示例:

library(dplyr)

# The goal is to know between which threshold belongs each record
data <- c(runif(99999), NA)
threshold <- seq(0, 1, by=0.1)
rank <- if_else(is.na(data), NA, max(which(data >= threshold))) # Error: longer object length is not a multiple of shorter object length

谢谢你

我认为 if_else 在这里不是正确的函数。尝试使用 findIntervalcut,这将找到 threshold 的正确存储桶,您的 data 位于其中。

findInterval(data, threshold)

cut

cut(data, threshold)

如果您想获得 threshold 索引,请将 cutlabels = FALSE 结合使用

cut(data, threshold, labels = FALSE)