【发布时间】:2021-05-27 18:59:23
【问题描述】:
我有一个变量列表,我想设置上限和下限,但我想用不同的名称保存它们,以免覆盖变量。 产生错误的 mtcars 示例:
# Variables to cap and floor
mtcars_vars <- c("wt","qsec","mpg")
# Function to cap and floor
cap_floor <- function(x,pct_floor = 0.05, pct_cap = 0.95){
quantiles <- quantile( x, c( pct_floor, pct_cap ),na.rm = TRUE)
x[ x < quantiles[1] ] <- quantiles[1]
x[ x > quantiles[2] ] <- quantiles[2]
x
}
mtcars[,paste0(mtcars_vars,"_cap_fl") := lapply(mtcars_vars, cap_floor)]
这会在 (1 - h) * qs[i] : non-numeric argument to binary operator 中产生一个错误,尽管该函数似乎适用于各个列。
cap_floor(mtcars$qsec)
cap_floor(mtcars$wt)
cap_floor(mtcars$mpg)
知道为什么会这样吗?
【问题讨论】:
标签: r data.table