我在计算数字时仍然遇到问题.
试图找到第一行[-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)
什么地方出了错
两件事情:
abc < -0.5 & abc > 0.5要求的值小于-0.5 且大于0.5但是,你实际上有: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.要避免这种情况,请使用间距(如我的代码所示).