2011-10-06 19 views
6

Rで丸め数値に問題があります。以下のデータがあります。小数点以下は8桁に丸めます。指定された桁数にRを丸める

structure(c(9.50863385275955e-05, 4.05702267762077e-06, 2.78921491976249e-05, 
8.9107773737659e-05, 5.0672643927135e-06, 5.87776809485182e-05, 
2.76421630542694e-05, 5.51662570625727e-05, 2.52790624570593e-05, 
2.00407457671806e-05, 8.33373482160056e-05, 7.8297940825207e-05, 
2.00407457671806e-05, 8.33373482160056e-05, 7.8297940825207e-05, 
2.00407457671806e-05, 8.33373482160056e-05, 7.8297940825207e-05 
), .Names = c("CC/CC", "TT/CC", "CT/CC", "NC/CC", "CC/TT", "TT/TT", 
"CT/TT", "NC/TT", "CC/CT", "TT/CT", "CT/CT", "NC/CT")) 

これらの数字は指数の形式であり、小数点以下8桁の有理数に変換したいと考えています。

答えて

13

番号のフォーマットを細かく制御するため、formatC()

res <- structure(c(9.50863385275955e-05, 4.05702267762077e-06), 
       .Names = c("CC/CC", "TT/CC")) 

formatC(res, format="f", digits=8) 
+0

出力を戻すだけです キャラクター。したがって、通常、format文のラッパーとしてのas.numeric()が必要です。 – nzcoops

+0

しかし、 '数値'の表示方法を制御することはできません。 'as.numeric(formatC(9.50863385275955e-05、format =" f "、digits = 8))'は私のシステム上に '9.509e-05'として表示されます。 –

+2

@MichaelHoffman - この動作を 'options(scipen = XXX)'で変更することができます。ここでは、XXXの数値が大きいほど小数点以下が表示されます。 – Chase

5

signif機能が有効桁の特定の数に丸め(及びround関数は小数点以下の特定の数に丸める)試みます。結果はoptions(digits=7)、オプションに依存を印刷する...あなたはまた、直接printdigits引数を指定できることを

res <- structure(c(9.50863385275955e-05, 4.05702267762077e-06), 
      .Names = c("CC/CC", "TT/CC")) 
signif(res, digits=8) 

注:

print(pi, digits=3) # 3.14 
print(pi, digits=17) # 3.1415926535897931 

はここsignifとの違いを示す例だと、 round

x <- c(pi, pi*1000, pi/1000) 
round(x, 3) # 3.142 3141.593 0.003 
signif(x, 3) # 3.14e+00 3.14e+03 3.14e-03 
関連する問題