我正在编写一份针对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" = ""))
但它不起作用
答案 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 - 我将在本周晚些时候尝试清理相关的单元测试并合并分支,如果一切似乎都没问题。