我希望knitr
生成默认情况下列间垂直线的表格。
我知道我可以传递align
参数来打印xtable
。但这是重复的,align
的值对于具有不同列数的表是不同的。
如何将此作为默认行为,而不是为每个表执行此操作?
答案 0 :(得分:3)
您可以随时修改xtable
以动态构建align
参数:
make_align_string <- function(x) {
k <- ncol(x)
format_str <- ifelse(sapply(x, is.numeric), "r", "l")
paste0(c("r", format_str), collapse = "|")
}
xtable_custom <- function(x, ...) xtable(x, ..., align = make_align_string(x))
xtable_custom(head(iris))
% latex table generated in R 3.2.1 by xtable 1.8-0 package
% Mon Feb 15 14:58:39 2016
\begin{table}[ht]
\centering
\begin{tabular}{r|r|r|r|r|l}
\hline
& Sepal.Length & Sepal.Width & Petal.Length & Petal.Width & Species \\
\hline
1 & 5.10 & 3.50 & 1.40 & 0.20 & setosa \\
2 & 4.90 & 3.00 & 1.40 & 0.20 & setosa \\
3 & 4.70 & 3.20 & 1.30 & 0.20 & setosa \\
4 & 4.60 & 3.10 & 1.50 & 0.20 & setosa \\
5 & 5.00 & 3.60 & 1.40 & 0.20 & setosa \\
6 & 5.40 & 3.90 & 1.70 & 0.40 & setosa \\
\hline
\end{tabular}
\end{table}