将标题添加到xtable

Gre*_*ell 4 r sweave

我不确定这是一个R问题还是一个Sweave问题.我在一张简单的桌子(3年级和6年级)中从2个时间点看学生的标记.我创建了桌子并打印,但是我想添加标签,以便人们知道哪个标记来自哪个等级.

我的Sweave代码是:

<<MakeData,results='asis'>>=
library(xtable)
Grade3 <- c("A","B","B","A","B","C","C","D","A","B","C","C","C","D","B","B","D","C","C","D")
Grade6 <- c("A","A","A","B","B","B","B","B","C","C","A","C","C","C","D","D","D","D","D","D")
Cohort <- table(Grade3,Grade6)
print(xtable(Cohort))
@
Run Code Online (Sandbox Code Playgroud)

我得到一个很好的表计数,但行和列都有相同的表示法.如何添加标签以使其更清晰?

Chr*_*den 9

要更改标签Cohort,请更改列和rownames:

rownames(Cohort) <- 1:4
colnames(Cohort) <- 5:8
Run Code Online (Sandbox Code Playgroud)

您还可以为xtable通话添加表格标题:

print(xtable(Cohort, caption = 'My Title'), caption.placement = 'top')
Run Code Online (Sandbox Code Playgroud)

你可以caption.placement用来告诉标题放在哪里.

编辑:

根据评论,我没有回答上述问题.要使xtable打印更像table水平上方的标签,您可以add.to.rowprint.xtable函数中使用:

addtorow <- list()
addtorow$pos <- list()
addtorow$pos[[1]] <- 0
addtorow$pos[[2]] <- 0
addtorow$command <- c('& & Grade 6 & & \\\\\n', "Grade 3 & A & B & C & D \\\\\n")
print(xtable(Cohort, caption = 'My Title'), caption.placement = 'top', 
      add.to.row = addtorow, include.colnames = FALSE)
Run Code Online (Sandbox Code Playgroud)

add.to.row采用包含两个元素的列表:poscommand. pos是一个长度与command矢量相同的列表.每个元素pos都是表中放置相应元素的行command.

在这里,我希望前两行是标签所在的位置.我将第一个和第二个元素设置pos为0,表示我把东西放在表格的顶部.0位置是表中两个水平规则之间的位置.

\\\\\n产生,其在表中的每一行加上一个新行字符的结束使用的胶乳代码"\\".

帮助xtable有一个很好的例子来add.to.row获取更多信息.

  • 做得很好.扩展你的答案,这甚至更好一点:`addtorow $ command < - c('&&\ multicolumn {4} {c} {Grade 6} \\\\\n',"Grade 3&A&B& C&D \\\\\n")`. (2认同)