4

関数「id」でテーブルを印刷しようとするとknitr::kable、列名に単語が表示されます。どうすれば変更できますか?

例:

> x <- structure(c(42.3076923076923, 53.8461538461538, 96.1538461538462,
                   2.56410256410256, 1.28205128205128, 3.84615384615385,
                   44.8717948717949, 55.1282051282051, 100),
                 .Dim = c(3L, 3L),
                 .Dimnames = structure(list(Condition1 = c("Yes", "No", "Sum"),
                                            Condition2 = c("Yes", "No", "Sum")),
                 .Names = c("Condition1", "Condition2")), class = c("table", "matrix"))
> print(x)
          Condition2
Condition1    Yes     No    Sum
       Yes  42,31   2,56  44,87
       No   53,85   1,28  55,13
       Sum  96,15   3,85 100,00
> library(knitr)
> kable(x)
|id   |   Yes|    No|    Sum|
|:----|-----:|-----:|------:|
|Yes  |  42,3|  2,56|   44,9|
|No   |  53,8|  1,28|   55,1|
|Sum  |  96,2|  3,85|  100,0|

編集:関数でこの動作の理由を見つけknitr:::kable_markます。しかし、今ではそれをより柔軟にする方法がわかりません。

4

2 に答える 2

2

の代替は、次kableの一般的な S3 メソッドである可能性がありますpander

> library(pander)
> pander(x, style = 'rmarkdown')


|  &nbsp;   |  Yes  |  No   |  Sum  |
|:---------:|:-----:|:-----:|:-----:|
|  **Yes**  | 42.31 | 2.564 | 44.87 |
|  **No**   | 53.85 | 1.282 | 55.13 |
|  **Sum**  | 96.15 | 3.846 | 100   |

小数点をコンマに設定する必要がある場合は、関連するオプションを前に設定し、それを R セッションで使用します。

> panderOptions('decimal.mark', ',')
> pander(x, style = 'rmarkdown')


|  &nbsp;   |  Yes  |  No   |  Sum  |
|:---------:|:-----:|:-----:|:-----:|
|  **Yes**  | 42,31 | 2,564 | 44,87 |
|  **No**   | 53,85 | 1,282 | 55,13 |
|  **Sum**  | 96,15 | 3,846 | 100   |

他にも可能な調整がいくつかあります: http://rapporter.github.io/pander/#pander-options

于 2013-11-09T21:19:59.150 に答える
1

剥がして丸ごと交換するのが一番簡単だと思いますkable_mark。注: これは非常に汚いですが、機能しているように見えます。また、機能をカスタマイズする現在の方法はありませんkable_mark(knitr にパッチを送信することはできます)。

km <- edit(knitr:::kable_mark)
# Now edit the code and remove lines 7 and 8.

unlockBinding('kable_mark', environment(knitr:::kable_mark))
assign('kable_mark', km, envir=environment(knitr:::kable_mark))

説明: まず関数を編集し、修正した定義を一時変数に保存します。2行を削除します

if (grepl("^\\s*$", cn[1L])) 
    cn[1L] = "id"

…もちろん、修正した関数を編集するのではなく、ハードコードすることも、関数を完全に変更することもできます。

次に、オーバーライド可能unlockBindingにするために使用します。knitr:::kable_markこれを行わないと、次のassignコマンドが機能しません。

最後に、パッチを適用した関数を に割り当てknitr:::kable_markます。終わり。

于 2013-11-09T15:33:15.170 に答える