[英]R - function, matrix, apply
编写自己的函数,该函数返回向量的第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遇到了一些问题。
任何帮助将不胜感激。
如果要获取向量的百分位数(单个值):
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))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.