R 如何从Hmisc中的LaTeX()获取LaTeX表以对齐列

R 如何从Hmisc中的LaTeX()获取LaTeX表以对齐列,r,latex,R,Latex,我在latex表中使用align时遇到一些问题,下面是一个示例: library(Hmisc) set.seed(1) x <- matrix(round(runif(6*3)*10, 2), ncol=6) x[1, 2] <- -round(x[1, 2], 0) x[3, 3] <- -round(x[1, 2], 1) x[3, 5] <- round(x[1, 2], 1) ci1 <- apply(x[,2:3], 1, FUN=function(x)

我在latex表中使用align时遇到一些问题,下面是一个示例:

library(Hmisc)
set.seed(1)
x <- matrix(round(runif(6*3)*10, 2), ncol=6)
x[1, 2] <- -round(x[1, 2], 0)
x[3, 3] <- -round(x[1, 2], 1)
x[3, 5] <- round(x[1, 2], 1)

ci1 <- apply(x[,2:3], 1, FUN=function(x){
        ret <- paste(min(x), "-", max(x))
        return(ret)
})
ci2 <- apply(x[,5:6], 1, FUN=function(x){
        ret <- paste(min(x), "-", max(x))
        return(ret)
})

x <- cbind(x[,1], ci1, x[,4], ci2)
colnames(x) <- c("A", "interval", "B", "interval")
rownames(x) <- sapply(letters[1:3], FUN=function(x){ return(paste("Var_", x, sep=""))})

latex(x, file="", align="rcrc", rowlabel.just="r", 
      cgroup = c("First", "Second"), 
      n.cgroup = c(2, 2),
      rgroup=c("Grup A and B", "Group C"), 
      n.rgroup=c(2, NROW(x) - 2), 
      ctable=T)
错误在这里:

\ctable[ label=x, pos=!tbp, ]{rllcll}

我希望rllcll成为rrccrc,但它不能做到这一点。我已经尝试了aling和halign参数的所有可能的替代方法。用手做这件事有点烦人…

以下是方法。代码的主要更改是使用
col.just=c('r','c','r','c')
而不是
align
。此外,行名称带有下划线,这将导致
latex
抛出错误。因此,请使用
latexTranslate
来转义下划线并防止出错

latex(x, file="", col.just = strsplit("rcrc", "")[[1]], rowlabel.just="r", 
  cgroup = c("First", "Second"), n.cgroup = c(2, 2),
  rgroup = c("Grup A and B", "Group C"), n.rgroup=c(2, NROW(x) - 2), 
  booktabs = T, rowname = latexTranslate(rownames(x)))

我粘贴了错误的代码(事实上是OP使用的原始代码。我现在已经更正了它。latex代码显示
\begin{tabular}{rrccrc}
数字的格式仍然错误。请注意,例如,错误的减号和间距。我还非常确定“x”(可能还有组名)是正确的应该被格式化为变量名。好吧。我将把它留给OP来明确说明他想要什么。从帖子中,他似乎想用
{rrccrc}替换
{rllcll}
,这就是本文的目的。因此,除非OP澄清他想要什么,否则我们都可以自己猜测。谢谢!我不敢相信col.just这么难找到。我再次阅读了手册:“…format.df(例如,col.just和其他格式选项,如dec、rdec和cdec)”.难以置信,表格毕竟是R中LaTeX的主要用途之一,想要对齐它们似乎并不少见…关于“x”,你只需要指定rowlabel=“My variables”,我实际上是有意的,但在我的真实脚本中,我使用了latextTranslate()正如您对行和列的建议。感谢booktabs=T提示,它看起来更好。我在这里遇到了与OP类似的问题。我不明白这一点。如果
align
不是正确的答案,那么它的目的是什么?任何阅读文档的人都会认为
align
是正确的参数。我看到了帮助(latex)在将参数传递给
format.df
的上下文中讨论了
col.just
,但大多数人不会想到这样做。
latex(x, file="", col.just = strsplit("rcrc", "")[[1]], rowlabel.just="r", 
  cgroup = c("First", "Second"), n.cgroup = c(2, 2),
  rgroup = c("Grup A and B", "Group C"), n.rgroup=c(2, NROW(x) - 2), 
  booktabs = T, rowname = latexTranslate(rownames(x)))