5

それぞれの有効数字を超える値を丸めるように同時に指示しているときに、パンダーが末尾のゼロを削除しないようにするにはどうすればよいですか?

次の再現可能な例では、2 つの仮想変数 (男性と女性) の p 値の列を丸めようとしています。

require(pander)

Gender <- c("Female", "Male")
p <- c(4.342e-06, 1.325e-05)
table <- data.frame(Gender, p)

panderOptions('round', 4)
panderOptions('keep.trailing.zeros', TRUE)

pandoc.table(table,
             round = panderOptions("round"),
             keep.trailing.zeros = panderOptions("keep.trailing.zeros"))

しかし、私が得るのは

------------
 Gender   p 
-------- ---
 Female   0 

  Male    0 
------------

でも手に入れたいのは

----------------
 Gender      p 
-------- -------
 Female   0.0000 

  Male    0.0000
----------------

どうすればそれを実現できますか?

**追伸:この質問は承知していますが、問題は解決しません。*

編集:ここでの質問も認識していますが、ここでの解決策は、ここで起こらないようにしようとしていること、つまり、何も含まない値に丸めようとしているときに末尾のゼロを削除することを正確に行いますすべての変数の有効数字。NicE には解決策があります (rawr は前述の前の質問にもありました) が、余分なコードを積み上げるだけでなく、値を文字に変換する必要があるため、可能であれば避けたいと考えています。

4

1 に答える 1

0

pander(またはより正確には)最初に数値を指定された桁数にpandoc.table丸めます。たとえば、次の基本例を参照してください。round

> round(c(4.342e-06, 1.325e-05), 4)
[1] 0 0

末尾のゼロがないため、これを保持することはできません。一方、数値の 1 つが少し大きい場合は、次のようにゼロに丸められません。

> round(c(4.342e-06, 1.325e-05), 5)
[1] 0e+00 1e-05

保持できる末尾のゼロがいくつかあります :) これに基づいて、次の 2 つの例を参照してください。

> pander(matrix((c(4.342e-06, 1.325e-05))), round = 5)

-----
0e+00

1e-05
-----

> pander(matrix((c(4.342e-06, 1.325e-04))), round = 5)

-------
0.00000

0.00013
-------

要するに、pander末尾のゼロがない場合に保持する方法を提供しません-必要な場合は、列の値をより多くの桁数で必要とするか (pander他の数値の末尾のゼロを埋めることができます)、または次のような前処理を行います。 @NicEが提案しました。

于 2015-07-24T16:40:46.437 に答える