R 如何计算特定范围内的数字量
我在计算数字时仍然有问题 尝试查找第一行[-0.5,0.5]内的数字量,以及第二行相同范围外的数字量 我使用abc=rnorm(100,平均值=0,标准差=1)。所以我总共有100个数字,但范围内只有35个,范围外35个,加起来不等于100R 如何计算特定范围内的数字量,r,R,我在计算数字时仍然有问题 尝试查找第一行[-0.5,0.5]内的数字量,以及第二行相同范围外的数字量 我使用abc=rnorm(100,平均值=0,标准差=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 length(abc[abc>=-0.5&abc=-0
length(abc[abc>=-0.5 & abc<=0.5])
[1] 35
length(abc[abc<-0.5 & abc>0.5])
[1] 35
length(abc[abc>=-0.5&abc=-0.5&abc您的目标是:
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
您已更改了abc
!这是因为0.5
。要避免此情况,请使用间距(如我的代码中所示)
作为一种快捷方式,您也可以这样做:
set.seed(1)
abc <- rnorm(100, mean=0, sd=1)
sum(abc>=-0.5 & abc<=0.5)
# [1] 41
sum(abc< -0.5 | abc>0.5)
# [1] 59
set.seed(1)
abc=-0.5和abc0.5)
# [1] 59
这是因为sum
将TRUE视为1,将FALSE视为0。或者通过子集
:
set.seed(1)
abc <- rnorm(100, mean=0, sd=1)
length(subset(abc, abc >= (-0.5) & abc <= 0.5))
[1] 41
length(subset(abc, abc < (-0.5) | abc > 0.5))
[1] 59
set.seed(1)
abc=(-0.5)和abc(0.5))
[1] 59
当你想在这样的半径内和半径之外找到数字时,考虑绝对值是有帮助的,然后你只有一个比较来做:
length(abc[abs(abc)<=0.5])
[1] 41
length(abc[abs(abc)>0.5])
[1] 59
对这两个陷阱的极好解释
set.seed(1)
abc <- rnorm(100, mean=0, sd=1)
sum(abc>=-0.5 & abc<=0.5)
# [1] 41
sum(abc< -0.5 | abc>0.5)
# [1] 59
set.seed(1)
abc <- rnorm(100, mean=0, sd=1)
length(subset(abc, abc >= (-0.5) & abc <= 0.5))
[1] 41
length(subset(abc, abc < (-0.5) | abc > 0.5))
[1] 59
length(abc[abs(abc)<=0.5])
[1] 41
length(abc[abs(abc)>0.5])
[1] 59
table(cut(abs(abc),c(-Inf,0.5,Inf)))
(-Inf,0.5] (0.5,Inf]
41 59