我创建了一个8 x 1000的Exp()变量矩阵。这表示从指数分布中抽样8次的1000次迭代(列)。我试图弄清楚如何获得每列中小于临界值的值的百分比。所以我最终得到1000%的向量。我已经尝试了几件事,但对R来说仍然相对较新,我遇到了一些困难。
这是我目前的代码版本,但不太适用。当我想要样本的均值或方差时,我已经使用了apply函数(没有for循环),所以我一直在尝试这种方法,但这个百分比似乎需要不同的东西。有什么想法吗?
m=1000
n=8
theta=4
crit=3
x=rexp(m*n,1/theta)
Mxs=matrix(x,nrow=n)
ltcrit=matrix(nrow=m,ncol=1)
for(i in 1:m){
lt3=apply(Mxs,2,length(which(Mxs[,i]<crit)/n))
}
ltcrit
答案 0 :(得分:3)
您可以在没有任何for循环的情况下使用apply
并获得答案:
percentages = apply(Mxs, 2, function(column) mean(column < crit))
请注意使用function(column) mean(column < crit)
创建匿名函数。您可能在需要列的方法时使用apply(Mxs, 2, mean)
,或者在需要列的方差时使用apply(Mxs, 2, var)
,但请注意您可以将任何所需的函数放入该空间并执行它在每一栏上。
另请注意,mean(column < crit)
是让column
中的值百分比小于crit
的好方法。
答案 1 :(得分:2)
您可以使用colMeans
:
colMeans(Mxs<crit)
[1] 0.500 0.750 0.250 0.375 0.375 0.875 ...