2012-10-31 81 views
2

我創建了一個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 

回答

3

您可以使用apply沒有任何for循環,並得到了答案:

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的好方法。

2

您可以使用colMeans

colMeans(Mxs<crit) 
[1] 0.500 0.750 0.250 0.375 0.375 0.875 ... 
相關問題