使用Rmarkdown和pander对齐和斜体化表列标题

时间:2016-03-21 19:53:31

标签: knitr r-markdown pander

我正在编写一份针对pdf的rmarkdown文档,其中的表格来自ezANOVA包中的部分列表。这些表是使用pander包制作的。玩具Rmarkdown文件,下面是玩具数据集。

---
title: "Table Doc"
output: pdf_document
---
```{r global_options, include=FALSE}
#set global knit options  parameters. 
knitr::opts_chunk$set(fig.width=12, fig.height=8, fig.path='Figs/', 
                      echo=FALSE, warning=FALSE, message=FALSE, dev = 'pdf')
```


```{r, echo=FALSE}
# toy data
id <- rep(c(1,2,3,4), 5)
group1 <- factor(rep(c("A", "B"), 10))
group2 <- factor(rep(c("A", "B"), each = 10))
dv <- runif(20, min = 0, max = 10)
df <- data.frame(id, group1, group2, dv)
```

``` {r anova, echo = FALSE}
library(ez)
library(plyr)
library(pander)

# create anova object
anOb <- ezANOVA(df,
                dv = dv,
                wid = id,
                between = c(group1, group2),
                type = 3,
                detailed = TRUE)

# extract the output table from the anova object, reduce it down to only desired columns
anOb <- data.frame(anOb[[1]][, c("Effect", "F", "p", "p<.05")])

# format entries in columns
anOb[,2] <- format( round (anOb[,2], digits = 1), nsmall = 1)
anOb[,3] <- format( round (anOb[,3], digits = 4), nsmall = 1)

pander(anOb, justify = c("left", "center", "center", "right"))
```

现在我有一些问题

a)对于最后三列,我希望表中的列标题在中心对齐,但这些标题下面的实际列条目对齐到右边。

b)我希望列标题'F'和'p'用斜体字表示,'p&lt; .05'列中的'p'用斜体字表示,但其余部分用普通字体表示。所以他们读了 F p p &lt; .05

我尝试使用plyr :: rename重命名列标题,如此

anOb <- rename(anOb, c("F" = "italic(F)", "p" = "italic(p)", "p<.05" = ""))

但它不起作用

1 个答案:

答案 0 :(得分:1)

在markdown中,你必须使用斜体的markdown语法,它在星号或下划线之间包装文本:

> names(anOb) <- c('Effect', '*F*', '*p*', '*p<.05*')
> pander(anOb)

-----------------------------------------
    Effect       *F*     *p*     *p<.05* 
--------------- ------ -------- ---------
  (Intercept)    52.3   0.0019      *    

    group1       1.3    0.3180           

    group2       2.0    0.2261           

 group1:group2   3.7    0.1273           
-----------------------------------------

如果您想以编程方式执行此操作,还可以使用pandoc.emphasis帮助函数将开头添加到字符串中。

但是你的另一个问题是由于程序包中存在错误,我刚刚在GH上提出了修正。请随意尝试该分支并报告GH - 我将在本周晚些时候尝试清理相关的单元测试并合并分支,如果一切似乎都没问题。

相关问题