如何计算特定范围内的数字量

ann*_*nne 2 r

我在计算数字时仍然遇到问题.

试图找到第一行[-0.5,0.5]内的数字量,以及第二行中相同范围外的数字量.

我用abc = rnorm(100, mean=0, sd=1).所以我总共有100个数字,但我只有35个数字在范围内,35个超出范围,这个数字不等于100.

length(abc[abc>=-0.5 & abc<=0.5])
[1] 35

length(abc[abc<-0.5 & abc>0.5])
[1] 35
Run Code Online (Sandbox Code Playgroud)

然后我尝试了:

length(which(abc>=-0.5 & abc<=0.5))
[1] 40

length(which(abc<-0.5 & abc>0.5))
[1] 26
Run Code Online (Sandbox Code Playgroud)

它仍然没有加起来100.这有什么不对?

csg*_*pie 10

你是在追求:

R> set.seed(1)
R> abc = rnorm(100, mean=0, sd=1)
R> length(abc[abc >= -0.5 & abc <= 0.5])
[1] 41
R> length(abc[abc < -0.5 | abc > 0.5])
[1] 59
Run Code Online (Sandbox Code Playgroud)

什么地方出了错

两件事情:

  1. abc < -0.5 & abc > 0.5要求的值小于-0.5 且大于0.5
  2. 但是,你实际上有:abc[abc<-0.5 & abc>0.5]由于范围界定,这会有所不同.让我们分开吧:

    R> abc[abc<-0.5 & abc>0.5]
     [1] 1.5953 0.7383 0.5758 1.5118 1.1249 0.9438 <snip>
    
    Run Code Online (Sandbox Code Playgroud)

    现在让我们来看看 abc

    R> abc
    [1] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  
    
    Run Code Online (Sandbox Code Playgroud)

    你改变了价值abc!这是因为<-是赋值运算符.你已经设置abc等于0.5 & abc > 0.5.要避免这种情况,请使用间距(如我的代码所示).