R中的函数工厂生成计算具有多个k的k百分位数的函数

时间:2018-05-24 15:21:41

标签: r

我想编写一个简单的函数工厂,可以使用多个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代码......

1 个答案:

答案 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)

关键是,您需要将...转换为向量而不是列表