R,knitr,xtable,同时使用add.to.row和hline.after

时间:2015-05-29 23:09:08

标签: r knitr xtable

我正在尝试使用xtable在R中生成一个knitr的表格。我插入了一个标题和额外的\hline s。 我正在使用add.to.row命令将我的标题插入到顶部以及表格的中间。 我似乎无法使hline.after命令正确。

我希望我的表看起来像两个表(尽管它是一个),在第4行数字之后和第二个标题之前有一个hline。 使用add.to.row命令后,我似乎无法在那里放线。

有什么建议吗?

\documentclass{article}
\usepackage[margin=.75in]{geometry}

\begin{document}

<<table, results='asis'>>=
require(knitr)
require(xtable)    

# Generate some data
set.seed(1683)
dat <- rnorm(48)
tab <- as.data.frame(matrix(dat, nrow=6, ncol=8))

addtorow <- list()
addtorow$pos <- list()
addtorow$pos[[1]] <- 0
addtorow$pos[[2]] <- 0
addtorow$pos[[3]] <- 4
addtorow$pos[[4]] <- 4
addtorow$command <- c(' & & \\multicolumn{2}{c}{Group 1} & \\multicolumn{2}{c}{Group 2} & 
                     \\multicolumn{2}{c}{Group 3}  \\\\\n',  
                   " name & $\\hat{\\beta}$ & A & B & A & B & A & B  \\\\\n", 
                   " & & & & & & & \\\\\n",
                   " name & $\\hat{\\sigma}$ & A & B & A & B & A & B  \\\\\n")


print(xtable(tab, align="rrccccccc"), add.to.row=addtorow, ,     include.rownames=FALSE, 
  include.colnames=FALSE, hline.after = c(-1, 0, 4, nrow(tab)))
@


\end{document}

1 个答案:

答案 0 :(得分:4)

尝试添加add.to.row

中的行
addtorow <- list()
addtorow$pos <- list()
addtorow$pos[[1]] <- 0
addtorow$pos[[2]] <- 0
addtorow$pos[[3]] <- 4
addtorow$pos[[4]] <- 4
addtorow$pos[[5]] <- 4
addtorow$pos[[6]] <- 4
addtorow$command <- c(' & & \\multicolumn{2}{c}{Group 1} & \\multicolumn{2}{c}{Group 2} & 
                     \\multicolumn{2}{c}{Group 3}  \\\\\n',  
                   " name & $\\hat{\\beta}$ & A & B & A & B & A & B  \\\\\n", 
                   " \\hline\n",
                   " & & & & & & & \\\\\n",
                   " \\hline\n",
                   " name & $\\hat{\\sigma}$ & A & B & A & B & A & B  \\\\\n")

\begin{table}[ht]
\centering
\begin{tabular}{rccccccc}
  \hline
   & & \multicolumn{2}{c}{Group 1} & \multicolumn{2}{c}{Group 2} &
\multicolumn{2}{c}{Group 3}  \\
  name & $\hat{\beta}$ & A & B & A & B & A & B  \\
  \hline
   1.28 & -0.71 & 1.30 & -1.08 & -0.32 & -0.84 & -0.75 & 0.67 \\ 
  -0.83 & -0.41 & 0.09 & 0.29 & -0.91 & -0.04 & -1.61 & -0.71 \\ 
  -1.82 & 0.16 & -0.34 & 0.39 & -1.58 & 0.44 & -0.81 & -0.89 \\ 
  -2.03 & 0.30 & 1.27 & -0.46 & -1.02 & 2.98 & -0.34 & -0.75 \\ 
  \hline
  & & & & & & & \\
  \hline
  name & $\hat{\sigma}$ & A & B & A & B & A & B  \\
 \hline
0.88 & 1.44 & 0.11 & -0.66 & -2.31 & -1.21 & -0.06 & 0.22 \\ 
  0.43 & 1.07 & -1.10 & 0.93 & -0.72 & 1.52 & -1.52 & -0.83 \\ 
   \hline
\end{tabular}
\end{table}