R - 函数,矩阵,适用

时间:2014-11-14 18:19:25

标签: r matrix apply cbind

编写自己的函数,返回向量的第75个百分位数。应用此 函数到矩阵b的所有列。

这里的矩阵b:

b = matrix(runif(1000*18, min=1000, max=10000), 1000, 18)

这是我使用索引创建的功能。

percentileOfAVector <- function(vector,percentile){
    adjustedVector=vector[0:floor(percentile * length(vector))]
    return (adjustedVector)
}

我想知道我是否可以使用apply函数来调整我得到的b向量。或者我应该使用for循环?

PS:我尝试用for循环来做这个但是当我试图将函数的结果存储在矩阵中时,我遇到了cbind的一些问题。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如果你想得到一个向量的百分位数(单个值):

apply(b, 2, function (x) quantile(x, prob=0.75))

但似乎这不是你所说的百分位数。如果你想要的是返回一个含有75%以下观察值的向量:

percentOfVector <- function(vector, percentile) {
    perc <- quantile(vector, prob=percentile)
    vector[which(vector <= perc)]
}

apply(b, 2, function (x) percentOfVector(x, 0.75))