2017-09-20 41 views
2

我想知道爲什麼我的length()命令在下面的R代碼總是給1?我想知道的p S中的小於或等於.05np S上的號碼是多少?可以識別一個條件嗎?

n = 1e3 
p = runif(n, 0, 1) 
length(p <= .05)/n # why just gives 1, while it should be less than 1. 
+1

您的意思是「平均值(p <= .05)」, – akrun

+1

@akrun,是否意味着(p <= .05)給出小於或等於.05的p的數量'n'的? – rnorouzian

+2

是的,是的意思是(p <= .05)'完全是這樣。你也可以使用'sum(p <= .05)/ n'。方法效率較低,但更接近你的企圖,將'長度(其中(P <= 0.05))/ N' –

回答

2

你需要這樣的:

n = 1e3 
p = runif(n, 0, 1) 
length(which(p <= .05))/n 

只需使用length會給你獲得布爾矢量其中還包括FALSE案件過的長度。該which功能會過濾掉僅TRUE案件,然後你可以測量的只有TRUE箱子的length

+1

感謝,似乎'均值(P <= 0.05)'做同樣的事情。 – rnorouzian

+0

@rnorouzian是的,有很多方法可以在R中做很多事情。 – TUSHAr

4

在R,運營商(例如,<,>,=)返回指示哪個元素(多個)滿足特定條件的邏輯矢量。 p <= .05輸出矢量或TRUEFALSE對於每個元件,這取決於它是否是< =到0.05(TRUE)否(FALSE)。如果要計算矢量中的TRUE元素的數量,可以這樣做:方法1:在R中,TRUE的值爲1,並且FALSE的值爲0.因此,要計算元素的數量TRUE在一個邏輯向量中,你可以把它的總和(例如,sum(p <= .05)。 方法2:你可以把你的載體p的實際子集,以查看其是< = 0.05的元素。一種方法是使用p[p <= .05],其中p後的方括號表示「來自p,取所有小於或等於0.05的p」。如果你想要的是p中有多少個元素是< = .05,你可以取這個向量的長度(length(p[p <= .05])。

相關問題