13

これはかなり古い問題であり、以前に議論されたことは知っていますが、期待どおりに機能させることはできません。

マークダウン ドキュメントがあり、インライン出力とチャンク出力の両方で、0.12、3.60、14.00、163.21 など、小数点以下 2 桁の一貫した数値形式の .docx レポートを使用knitrして作成したいと考えています。このスレッドを読みました \Sexpr{} ごとに round() を使用しないようにするには? 自動的にそれを行うことができることが提案された場所。しかし、それは私にはうまくいかないようです。ここで何が足りないか教えてください。panderpander

スクリプト:

```{r, echo=FALSE}
library(knitr)
opts_chunk$set(echo = FALSE, message = FALSE, results = 'asis')
```

```{r}
require(pander)
panderOptions('digits' , 2) #this should do the trick, right?
```

Test
=====

Let's produce some test stats:


```{r}
model1 = lm(weight~feed, chickwts)
anova.m1 = anova(model1)
pander(anova.m1)
pander(coef(summary(model1)))
```

In-line R codes: "Type of food affects body mass of the chicks
(F~`r anova.m1$Df[1]`,`r anova.m1$Df[2]`~ = `r anova.m1$F[1]`, p =  `r anova.m1$Pr[1]`)." 


```{r}
FILE <- "Test"
system(paste0("pandoc -o ", FILE, ".docx ", FILE, ".md"))
```

しかし、結果は私が期待するものではありません (小数の範囲は 0 から 7 の間のほとんどすべてであることに注意してください)。

ここに画像の説明を入力

4

2 に答える 2

8

どうですか:

> library(pander)
> panderOptions('digits', 2)
> panderOptions('round', 2)
> panderOptions('keep.trailing.zeros', TRUE)
> pander(anova.m1)

----------------------------------------------------------
    &nbsp;       Df   Sum Sq   Mean Sq   F value   Pr(>F) 
--------------- ---- -------- --------- --------- --------
   **feed**      5    231129    46226      15        0    

 **Residuals**   65   195556    3009                      
----------------------------------------------------------

Table: Analysis of Variance Table

> pander(coef(summary(model1)))

----------------------------------------------------------------
      &nbsp;         Estimate   Std. Error   t value   Pr(>|t|) 
------------------- ---------- ------------ --------- ----------
  **(Intercept)**     323.58      15.83       20.44      0.00   

 **feedhorsebean**   -163.38      23.49       -6.96      0.00   

  **feedlinseed**    -104.83      22.39       -4.68      0.00   

 **feedmeatmeal**     -46.67      22.90       -2.04      0.05   

  **feedsoybean**     -77.15      21.58       -3.58      0.00   

 **feedsunflower**     5.33       22.39       0.24       0.81   
----------------------------------------------------------------

インライン R チャンクについて:panderそこも呼び出すか、いくつかのフックを適用して自動的に行います。


更新:小数点以下の桁数を設定した後は、ここで桁数を設定する必要はありません。

> library(pander)
> panderOptions('round', 2)
> panderOptions('keep.trailing.zeros', TRUE)
> model1 = lm(weight~feed, chickwts)
> anova.m1 = anova(model1)
> pander(anova.m1)

----------------------------------------------------------
    &nbsp;       Df   Sum Sq   Mean Sq   F value   Pr(>F) 
--------------- ---- -------- --------- --------- --------
   **feed**      5    231129    46226     15.36      0    

 **Residuals**   65   195556    3009                      
----------------------------------------------------------

Table: Analysis of Variance Table

> pander(coef(summary(model1)))

----------------------------------------------------------------
      &nbsp;         Estimate   Std. Error   t value   Pr(>|t|) 
------------------- ---------- ------------ --------- ----------
  **(Intercept)**     323.58      15.83       20.44      0.00   

 **feedhorsebean**   -163.38      23.49       -6.96      0.00   

  **feedlinseed**    -104.83      22.39       -4.68      0.00   

 **feedmeatmeal**     -46.67      22.90       -2.04      0.05   

  **feedsoybean**     -77.15      21.58       -3.58      0.00   

 **feedsunflower**     5.33       22.39       0.24       0.81   
----------------------------------------------------------------

さらなる更新:digits最初の実行で2番目の表のセットで機能した理由:

> format(c(0.01, 15.36 ), digits = 2)
[1] " 0.01" "15.36"
> format(15.36, digits = 2)
[1] "15"

そして、ユーザーの要求に基づいて、列内の数値が同じ小数点以下の桁数になるように、列単位でpandoc.table実行されます (そのオプションが に設定されている場合は末尾のゼロも含まれます)。formatTRUE

これがバグのように見える場合は、GitHub で問題を開いてください: https://github.com/Rapporter/pander

于 2013-11-25T19:08:33.937 に答える