У меня есть фреймворк, который может выглядеть так
> df
Product noPat Val Tot TotVal
Product A -318 -108.12 1356 461.04
Product C 403 544.05 462 623.7
Product D -32 -39.68 529 655.96
Product B N/A N/A N/A N/A
Я хотел бы добавить две многоколонки, используя аргумент add.to.row в функции xtable.
print(xtable(df, digits=2, caption=strCaption, label="Test_table"),
size="footnotesize", #Change size; useful for bigger tables
include.rownames=FALSE, #Don't print rownames
caption.placement="top",
hline.after=NULL, #We don't need hline; we use booktabs
add.to.row = list(pos = list(-1,
nrow(df)),
command = c(paste("\\hline \n",
"& \\multicolumn{2}{c}{Growth} & \\multicolumn{2}{c}{Total} \\\\ \n",
"\\hline \n"),
"\\hline \n")
)
)
Что генерирует желаемый результат латекса:
\begin{table}[ht]
\centering
\caption{test}
\label{Test_table}
\begingroup\footnotesize
\begin{tabular}{lllll}
\hline
& \multicolumn{2}{c}{Growth} & \multicolumn{2}{c}{Total} \\
\hline
Product & noPat & Val & Tot & TotVal \\
Product A & -318 & -108.12 & 1356 & 461.04 \\
Product C & 403 & 544.05 & 462 & 623.7 \\
Product D & -32 & -39.68 & 529 & 655.96 \\
Product B & N/A & N/A & N/A & N/A \\
\hline
\end{tabular}
\endgroup
\end{table}
Какой формат мне нужен. Я хотел бы, чтобы Shiny выводил это, но Shiny просто добавляет аргумент add.to.row в виде текста, выводимого непосредственно над таблицей.
Моя реализация в Shiny:
Server.R
output$tabletest <- renderTable({
rows <<- nrow(df)
xtable(df, digits=2)
},
caption = "Sample Data",
caption.placement = getOption("xtable.caption.placement", "bottom"),
caption.width = getOption("xtable.caption.width", NULL),
include.rownames=getOption("xtable.include.rownames", FALSE), #Don't print rownames
add.to.row = getOption("xtable.add.to.row",list(pos = list(-1,
rows),
command = c(paste("\\hline \n",
"& \\multicolumn{2}{c}{Growth} & \\multicolumn{2}{c}{Total} \\\\ \n",
"\\hline \n"),
"\\hline \n")))
)
UI.R
tableOutput("tabletest")
Использование MathJax
Как было предложено NicE, я попытался использовать MathJax следующим образом
Server.R
output$tabletest<- renderUI({
result <- withMathJax(HTML(
"\\begin{table}[ht]
\\centering
\\caption{test}
\\label{Test_table}
\\begin{tabular}{lllll}
\\hline
& \\multicolumn{2}{c}{Growth} & \\multicolumn{2}{c}{Total} \\\\
\\hline
Product & noPat & Val & Tot & TotVal \\\\
Product A & -318 & -108.12 & 1356 & 461.04 \\\\
Product C & 403 & 544.05 & 462 & 623.7 \\\\
Product D & -32 & -39.68 & 529 & 655.96 \\\\
Product B & x & x & x & x \\\\
\\hline
\\end{tabular}
\\end{table}"
))
})
UI.R
withMathJax(),
uiOutput("KeyIndicatorsPatients")
Но это приводит к
renderTable
будет использоватьtype="html"
для печатиxtable
, но вашadd.to.row
- латекс, поэтому они не печатаются, вы можете использоватьwithMathJax
для отображения таблицы, вот пример - person NicE   schedule 29.02.2016floating=FALSE, tabular.environment="array", comment=FALSE, print.results=FALSE
, а также добавить$$
в начале и в конце кода (это делается с помощью вставки в ссылку, которую я опубликовал). Оказывается, MathJax не поддерживает\multicolumn
, поэтому я предполагаю, что единственный вариант - преобразовать дополнительную строку в html. Я выложил пример. - person NicE   schedule 01.03.2016