我的R函数用于找出平均值的k个标准差内的百分比,不起作用

时间:2017-01-04 14:32:10

标签: r loops

whatpercent <- function(x) {
 i<-1
 for(i in length(x)) {
 if(x[i]<= mean(x)+sd(x)) {
 vec <- c(vec,x[i])
 }
 else{
 next
}
}
percent <- length(vec)/length(x)
percent <- percent * 100
return(percent)
}

好吧,当我使用

时,我似乎得到同样的东西
whatpercent(mydata,1) whatpercent(mydata,2) whatpercent(mydata,3) ...

可能是什么问题?

1 个答案:

答案 0 :(得分:2)

这是一个简单的功能,应该达到你想要的效果。对于这样的任务,您应该使用矢量化函数以避免循环。它还使您的代码更清晰,更易于阅读。

whatpercent <- function(x, k) {
    mean(abs(x - mean(x)) <= sd(x) * k)
}

#Example
x <- rnorm(100)
whatpercent(x,2)
[1] 0.95