我想编写一个简单的函数工厂,可以使用多个k计算k百分位数的函数。
我的代码:
genKpercentile = function(...) {
l = list(...)
funList = list()
l[[..k]]
return(function(x) quantile(x, probs = k*0.01))
}
genKpercentile(25,50,75)(any_dataset) #find the 25,50,75 percentile in any dataset
但我是R的新手所以我不能确定如何实现我的目的。 任何人都可以帮助我纠正我的代码,以便能够生成多个k百分位数。
非常感谢你。我可以使用一个k来生成k百分位数:
data(mtcars)
mtcars
genKpercentile = function(k) {
return(function(x) quantile(x, probs = k*0.01))
}
genKpercentile(25)(mtcars$mpg)
但如果我想生成多个k,我不知道如何编写我的R代码......
答案 0 :(得分:1)
我认为你在寻找的是
any_dataset = rnorm(1000)
genKpercentile = function(...) {
l = unlist(list(...))
return(function(x) quantile(x, probs = l*0.01))
}
genKpercentile(25,50,75)(any_dataset) #find the 25,50,75 percentile in any dataset
或者,更简单地说
genKpercentile = function(...) function(x) quantile(x, probs = c(...)*0.01)
关键是,您需要将...
转换为向量而不是列表