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
在这里不是正确的函数。尝试使用 findInterval
或 cut
,这将找到 threshold
的正确存储桶,您的 data
位于其中。
findInterval(data, threshold)
与cut
cut(data, threshold)
如果您想获得 threshold
索引,请将 cut
与 labels = FALSE
结合使用
cut(data, threshold, labels = FALSE)
我不确定如何使用 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
在这里不是正确的函数。尝试使用 findInterval
或 cut
,这将找到 threshold
的正确存储桶,您的 data
位于其中。
findInterval(data, threshold)
与cut
cut(data, threshold)
如果您想获得 threshold
索引,请将 cut
与 labels = FALSE
结合使用
cut(data, threshold, labels = FALSE)