R 具有各种列类型的xtable

R 具有各种列类型的xtable,r,xtable,R,Xtable,我正在尝试在我的表上使用xtable来处理各种列类型,包括数字、latex命令和字符串 例如: a1 <- paste("\\multirow{2}{*}{", c(1, 2, 3, 4),"}", sep = "") a2 <- rep(NA, 4) riffle <- function (a,b) { n <- min(length(a), length(b)) p1 <- as.vector(rbind(a[1:n], b[1:n])) p2 <

我正在尝试在我的表上使用xtable来处理各种列类型,包括数字、latex命令和字符串

例如:

a1 <- paste("\\multirow{2}{*}{", c(1, 2, 3, 4),"}", sep = "")
a2 <- rep(NA, 4)

riffle <- function (a,b) { 
n <- min(length(a), length(b)) 
p1 <- as.vector(rbind(a[1:n], b[1:n])) 
p2 <- c(a[-(1:n)], b[-(1:n)]) 
c(p1, p2) 
}

 a <- riffle(a1, a2)
 b <- rnorm(8, 0, 1)
 c <- rep(c("a", "b"), 2)
 d <- rexp(8, 2)*10
 tab <- cbind(a, b, c, d)
 print(xtable(tab), include.rownames = FALSE)
我想得到这样的东西:

\begin{table}[ht]
\centering
\begin{tabular}{llll}
  \hline
a & b & c & d \\ 
  \hline
   \multirow{2}{*}{1} & 0.567  & a & 17 \\ 
                      & -1.451 & b & 6 \\ 
  \multirow{2}{*}{2}  & 1.190  & a & 1 \\ 
                      & 1.082  & b & 8 \\ 
  \multirow{2}{*}{3}  & 0.771  & a & 5 \\ 
                      & 0.319  & b & 2 \\ 
  \multirow{2}{*}{4}  & 0.673  & a & 6 \\ 
                      & 1.096  & b & 3 \\ 
   \hline
\end{tabular}
\end{table}

包括数字列的不同四舍五入(打印时使用
数字
命令通常是可行的,但不适用于我的表格)

解决方案是使用
sanitize.text.function=force
print()中对
xtable
对象使用
函数

tab <- data.frame(a, b, c, d)
print(xtable(tab), include.rownames = FALSE, sanitize.text.function = force)

对于取整问题,请尝试使用
data.frame
而不是
cbind
创建
tab
(即,
选项卡,如果您想在不同的列中使用不同的位数,在运行
xtable
之前,请将每列四舍五入到您想要的位数,并转换为字符,这样
xtable
就不会用尾随的零填充。@eipi10感谢您的回复!不过,即使在使用data.frame时,我也会得到一个s。)ame输出如上所述。因此必须存在另一个问题。因此,有一个代码解决了我的问题
sanitize.text.function=force
,这一个打印
\multirow{2}{*}{1}
正确。@eipi10感谢您的支持help@Adela如果您将您的解决方案作为答案发布,遇到相同问题的人将非常感激。还请注意,从您的评论中可以看出,此选项
sanitize.text.function=force
是否提供给同样接受
xtable(…)的
print
函数
,而不是直接指向
xtable
函数。如果你写了一个答案,你可以详细说明这一切,从而帮助他人。
tab <- data.frame(a, b, c, d)
print(xtable(tab), include.rownames = FALSE, sanitize.text.function = force)
\begin{table}[ht]
\centering
\begin{tabular}{lrlr}
  \hline
  a & b & c & d \\ 
  \hline
  \multirow{2}{*}{1} &  1.26 & a & 2.43 \\ 
   & -0.42 & b & 3.60 \\ 
  \multirow{2}{*}{2} & -0.14 & a & 6.27 \\ 
   & -0.12 & b & 1.68 \\ 
  \multirow{2}{*}{3} &  0.70 & a & 2.15 \\ 
   & -1.05 & b & 0.62 \\ 
  \multirow{2}{*}{4} &  2.29 & a & 0.84 \\ 
   & -0.21 & b & 3.36 \\ 
   \hline
\end{tabular}
\end{table}