2

数値の計算はまだ問題があります。

最初の行の [-0.5 , 0.5] 内の数値の量と、2 行目の同じ範囲外の数値の量を見つけようとしています。

私は使用します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

それから私は試しました:

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

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

それでも合計は 100 になりません。何が問題なのですか?

4

4 に答える 4

3

このように半径の内側と外側の数値を見つけたい場合は、絶対値を考慮すると便利です。そうすれば、比較を 1 つだけ行うことができます。

length(abc[abs(abc)<=0.5])
[1] 41
length(abc[abs(abc)>0.5])
[1] 59

またはcut、 andtableを使用して 1 行で実行できます。

table(cut(abs(abc),c(-Inf,0.5,Inf)))

  (-Inf,0.5] (0.5,Inf] 
       41        59 
于 2013-04-18T08:14:06.030 に答える
2

ショートカットとして、次の方法でも実行できます。

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

これは、sumTRUE を 1、FALSE を 0 と見なすため機能します。

于 2013-04-18T08:03:13.790 に答える