2

これがMWEで、ランダムに選択された997個の異なるバケットへの(この場合は)181個のボールの分布を計算しています。

> hthord
function(tprs=100,lower=0,upper=5,limits=0.95,ords=997){
    p = dbinom(seq(lower,upper,),size=tprs,prob=1/ords)
    ll = qnorm(0.5*(1+limits))
    pe = ords*p
    pl = pe - ll*sqrt(ords*p*(1-p))
    pu = pe + ll*sqrt(ords*p*(1-p))
    cbind(seq(lower,upper),pl,pe,pu,deparse.level=0)
}

> hthord(181)
     [,1]         [,2]         [,3]        [,4]
[1,]    0 808.37129927 8.314033e+02 854.4353567
[2,]    1 128.89727212 1.510884e+02 173.2794395
[3,]    2   6.46037329 1.365256e+01  20.8447512
[4,]    3  -0.95391946 8.178744e-01   2.5896682
[5,]    4  -0.33811535 3.654158e-02   0.4111985
[6,]    5  -0.06933517 1.298767e-03   0.0719327
> 

列[、3]のみが指数表記で表示される理由を誰かが説明できますか?

plとpuがpeとは異なるクラスに強制されていることに気づきましたが、詳細は私にはわかりません。助けてください!

4

2 に答える 2

3

行列を返す関数を実行しています。マトリックスを表示するために、print.default()が呼び出されます。Rのグローバルオプションを考慮しながら、各列の値を表すための適切な(簡潔な)方法を見つけようとします。

options()またはを入力?optionsすると、グローバルオプションにいくつかの表示および印刷設定が含まれていることがわかります。1つは数字です。これは、数値を印刷するときに印刷する有効桁数を制御します。もう1つはscipenで、「科学的(記数法)ペナルティ」の略で、次のようにhelp(options)説明されています。

scipen:  integer. A penalty to be applied when deciding to print numeric values 
         in fixed or exponential notation. Positive values bias towards fixed 
         and negative towards scientific notation: fixed notation will be 
         preferred unless it is more than scipen digits wider."

あなたの場合、列3の値は他の列よりも小さく、科学的記数法で値を記述する方が簡潔であることがわかります。print.deault()ベクトルまたは列の表示方法に一貫性があるため、列全体が変更されます。

pedrosaurioが述べたように、scipenを非常に高い値に設定して、科学的記数法が表示されないようにすることができます。

実践的な学習の設定を試してみることができます。

> op <- options() # store current settings

> options("digits","scipen")
$digits
[1] 7

$scipen
[1] 0

> print(pi); print(1e5)
[1] 3.141593
[1] 1e+05
> print(c(pi, 1e5)) # uses consistent format for whole vector
[1] 3.141593e+00 1.000000e+05

> options(digits = 15)
> print(pi)
[1] 3.14159265358979
> options(digits = 5)
> print(pi)
[1] 3.1416

> print(pi/100000); print(1e5)
[1] 3.1416e-05
[1] 1e+05
> options(scipen=3) #set scientific notation penalty
> print(pi/100000); print(1e5)
[1] 0.000031416
[1] 100000

> options(op)     # reset (all) initial options

参照:stackoverflow.com/questions/9397664/

于 2012-11-18T18:22:06.607 に答える
1

scipen同じ形式になるようにオプションを変更します。これは単なる形式であるため、計算には関係ありません。

options(scipen=9999)

このコマンドを実行すると、すべて同じように見えるはずです。

なぜ列3なのですか?わかりません。科学的記数法を認識しない別のプログラムにエクスポートしない限り、問題にはなりません。

于 2012-11-15T19:31:43.247 に答える