【发布时间】:2020-11-05 12:45:18
【问题描述】:
我正在尝试在 R 中编写一个函数来聚合按 N 个价格桶分组的数据,其中 N 是函数的输入变量。
priceDiffBucket <- function(prices,numBuckets){
vec <- c(0:numBuckets)
#Create N (numBuckets) buckets where the min/max are rounded off to the lowest/highest 5th integer
bucketborders <- quantile(c((min(prices)-min(prices)%%5):
(max(prices) - max(prices)%%5+5)),probs = vec/numBuckets)
#Create a dataframe which contains these buckets as a column
dfFinal <- case_when(
for (i in 1:(length(vec)-1)){
prices < bucketborders[i+1] ~ paste(paste0('"',bucketborders[i]),"-",
paste0('"',bucketborders[i+1],'"'))
}
)
return(dfFinal)
}
在此之后,我将根据这些存储桶汇总值。但是 R 似乎不接受 case_when() 语句中的 for 语句,因此我无法在通用函数中实现这些存储桶。我收到以下错误:
Error: No cases provided.
Run `rlang::last_error()` to see where the error occurred.
运行 Rlang::lst_error() 只会显示最后一段代码,但对我没有帮助。如果 case-when 语句中的 for 循环是不可能的,那么我试图在 R 中以另一种方式做的事情可能吗?
【问题讨论】:
-
请使用
dput或我们可以复制和使用的东西添加数据。还显示共享数据的预期输出。了解how to ask a good question 和how to give a reproducible example。 -
感谢您的反馈,我的下一个问题会做,目前我的问题已经解决了。