2017-08-04 9 views
3

CODE:knitrのKABLEはとして2.29e-30の印刷された "0"

# some data 
dat <- 
    data.frame(
    log2fc = c(0.28, 10.82, 8.54, 5.64, 8.79, 6.46), 
    pvalue = c(0.00e+00, 2.29e-30, 7.02e-30, 4.14e-29, 1.86e-28, 1.78e-27) 
) 

# observe in markdown format 
knitr::kable(dat, format="markdown") 

OUTPUT:

| log2fc| pvalue| 
|------:|------:| 
| 0.28|  0| 
| 10.82|  0| 
| 8.54|  0| 
| 5.64|  0| 
| 8.79|  0| 
| 6.46|  0| 

問題:

を通報出力は、それは最後の列をレンダリングしているpvalueを0に設定します。しかし、私は私のデータフレームに見られるものと同じフォーマットを保持したいと思うでしょう。それ、どうやったら出来るの ?私はさまざまなスレッドからいくつかのソリューションを試しましたが、何も動作していないようです。誰かが私に正しい方向を向けることができますか?

pvalue列を文字ベクトルに変換するよう提案しないでください。それは機能するすばやく汚れた解決策ですが、私はそれをしたくありません:

  1. 私は私のデータフレームを使いこなしたくありません。
  2. 私は、最後の列の科学形式がマークダウンで印刷する間に保持されない理由について興味を持っています。
  3. 私は、科学的な形式のさまざまな列を持つテーブルがたくさんあります。この問題を自動的に処理する方法を探しています。

答えて

4

kable()はあなたが本当に大きな値に桁数を設定しない限りゼロに、それらの小さな値を切り捨てベースR機能round()を呼び出します。しかし、あなたはそれを行うことができます。

あなたには、いくつかの列に定期的に丸めをしたいならば、あなたは、例えば、数字のために複数の値を指定することができます

| log2fc| pvalue| 
|------:|--------:| 
| 0.28| 0.00e+00| 
| 10.82| 2.29e-30| 
| 8.54| 7.02e-30| 
| 5.64| 4.14e-29| 
| 8.79| 1.86e-28| 
| 6.46| 1.78e-27| 

を与える

knitr::kable(dat, format = "markdown", digits = 32) 

knitr::kable(dat, format = "markdown", digits = c(1, 32)) 


| log2fc| pvalue| 
|------:|--------:| 
| 0.3| 0.00e+00| 
| 10.8| 2.29e-30| 
| 8.5| 7.02e-30| 
| 5.6| 4.14e-29| 
| 8.8| 1.86e-28| 
| 6.5| 1.78e-27| 
+0

ありがとうございます!それは完全に動作します。 :) –

関連する問題