web-dev-qa-db-ja.com

kable / Rマークダウンの列名を置き換えます

データフレームにはcolumnい列名がありますが、レポートに表を表示するとき、特殊文字「(」、改行、ギリシャ文字、繰り返し名などを含む「実際の」名前にしたいです。

そのようなフォーマットを可能にするためにknitrの名前を置き換える簡単な方法はありますか?

提案されたソリューション

私がやろうとしたのは、データフレーム名の出力を抑制し、_add_header_above_を使用して、複数の列にまたがる名前と名前を改善することです。私が見たいくつかのアドバイスは使用するように言っています:

_x <- kable(df)
gsub("<thead>.*</thead>", "", x) 
_

列名を削除します。それは問題ありませんが、問題は、後で_add_header_above_を実行すると、元の列名が戻ってくることです。 col.names=rep('',times=ncol(d.df))kable(...)を使用すると、名前はなくなりますが、行は残り、新しい列名とテーブル本体の間にギャップが残ります。以下に、説明するコードチャンクを示します。

_```{r functions,echo=T}
drawTable <- function(d.df,caption='Given',hdr.above){
require(knitr)
require(kableExtra)
require(dplyr)

hdr.2 <- rep(c('Value','Rank'),times=ncol(d.df)/2)
x <- knitr::kable(d.df,format='latex',align='c',
  col.names=rep('',times=ncol(d.df))) %>%     
kable_styling(bootstrap_options=c('striped','hover',
  'condensed','responsive'),position='center',
   font_size = 9,full_width=F)

x %>% add_header_above(hdr.2) %>%
  add_header_above(hdr.above)
}
```

```{r}
df <- data.frame(A=c(1,2),B=c(4,2),C=c(3,4),D=c(8,7))
hdr.above <- c('A2','B2','C2','D2')
drawTable(df,hdr.above = hdr.above)
```
_

enter image description here

7
Dr Dave

行名を置き換えるアドバイスをどこから得たのかわかりませんが、非常に複雑に思えます。 kable内で組み込みのcol.names引数を使用する方がはるかに簡単です。このソリューションは、HTML出力とLaTeX出力の両方で機能します。

---
output:
  pdf_document: default
  html_document: default
---
```{r functions,echo=T}
require(knitr)

df <- data.frame(A=c(1,2),B=c(4,2),C=c(3,4),D=c(8,7))
knitr::kable(df, 
             col.names = c("Space in name",
                           "(Special Characters)",
                           "$\\delta{m}_1$",
                           "Space in name"))

```

PDF出力enter image description here

HTML出力enter image description here

27
Michael Harper