我想知道为什么下面R代码中的length()
命令总是给出1?我想知道p
.05
中n
的{{1}}的数量是多少还是等于p
?
n = 1e3
p = runif(n, 0, 1)
length(p <= .05)/n # why just gives 1, while it should be less than 1.
答案 0 :(得分:4)
在R中,运算符(例如,&lt;,&gt;,=)返回指示哪个(哪些)元素满足特定条件的逻辑向量。 p <= .05
为每个元素输出一个向量或TRUE
和FALSE
,具体取决于它是否为&lt; = to .05(TRUE
)或不是FALSE
)。如果您想要计算向量中TRUE
元素的数量,可以按如下方式计算:方法1:在R中,TRUE
的值为1且{{ 1}}值为0.因此,要计算逻辑向量中FALSE
个元素的数量,您可以只取它的总和(例如,TRUE
)。 方法2:您可以使用向量sum(p <= .05
的实际子集来查看&lt; = .05的元素。一种方法是使用p
,其中p[p <= .05]
之后的方括号表示“从p开始,取所有p小于或等于.05”。您可以使用此向量的长度(p
),如果您想要的是length(p[p <= .05]
中有多少元素&lt; = .05。
答案 1 :(得分:2)
你需要这个:
n = 1e3
p = runif(n, 0, 1)
length(which(p <= .05))/n
只需使用length
即可获得所获布尔矢量的长度,其中也包含FALSE
个案例。 which
函数只过滤掉TRUE
个案例,然后您只能评估length
个案例的TRUE
。