可以长度识别一个条件吗?

时间:2017-09-20 04:43:38

标签: r

我想知道为什么下面R代码中的length()命令总是给出1?我想知道p .05n的{​​{1}}的数量是多少还是等于p

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

2 个答案:

答案 0 :(得分:4)

在R中,运算符(例如,&lt;,&gt;,=)返回指示哪个(哪些)元素满足特定条件的逻辑向量。 p <= .05为每个元素输出一个向量或TRUEFALSE,具体取决于它是否为&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