如何使用xtable在表格或数据框的列名中设置空格

3
所以我想在数据框的列名中使用单词之间的空格,并将数据框打印成latex格式的pdf。然而,当我使用xtable()时,列名会合并。
例如,我希望第二列的标题看起来像“Categoria de Referencia”。但是,我得到的是:

enter image description here

有人知道如何解决这个问题吗?这里是将数据框转换为latex的R代码块:

tab<-xtable(dat,caption="Efectos de las Variables sobre la Probabilidad de Conversión",digits=2)
print(tab,latex.environments = "center",include.rownames=FALSE)

这是生成数据框的代码:

structure(list(Variable = structure(c(4L, 3L, 3L, 3L, 3L, 3L, 
2L, 1L), .Label = c("App", "Clicker", "País", "Uso"), class = "factor"), 
    Categoría.de.Referencia = structure(c(3L, 1L, 1L, 1L, 1L, 
    1L, 2L, 4L), .Label = c("Brasil", "Clicker", "No Acaba Unidad", 
    "No Usa App"), class = "factor"), Categoría.Considerada = structure(c(1L, 
    2L, 3L, 4L, 5L, 7L, 6L, 8L), .Label = c("Acaba la Unidad", 
    "España", "Francia", "ITalia", "Méjico", "No Cliker", "Otros Países", 
    "Usa App"), class = "factor"), Variación = structure(c(8L, 
    4L, 5L, 6L, 1L, 2L, 3L, 7L), .Label = c("-0.19%", "-0.46%", 
    "-2.32%", "0.31%", "0.46%", "0.7%", "1.15%", "2.08%"), class = "factor")), .Names = c("Variable", 
"Categoría.de.Referencia", "Categoría.Considerada", "Variación"
), row.names = c(NA, -8L), class = "data.frame")

@MichaelChirico完成了,我编辑了原帖。 - intael
1个回答

6
你最好的选择可能是使用sanitize.*选项,例如:
> print.xtable(xtable(dat),include.rownames=F,
               sanitize.colnames.function=function(x)gsub("\\."," ",x))

% latex table generated in R 3.2.1 by xtable 1.7-4 package
% Thu Aug 20 10:47:54 2015
\begin{table}[ht]
\centering
\begin{tabular}{llll}
  \hline
Variable & Categoría de Referencia & Categoría Considerada & Variación \\ 
  \hline
Uso & No Acaba Unidad & Acaba la Unidad & 2.08\% \\ 
  País & Brasil & España & 0.31\% \\ 
  País & Brasil & Francia & 0.46\% \\ 
  País & Brasil & ITalia & 0.7\% \\ 
  País & Brasil & Méjico & -0.19\% \\ 
  País & Brasil & Otros Países & -0.46\% \\ 
  Clicker & Clicker & No Cliker & -2.32\% \\ 
  App & No Usa App & Usa App & 1.15\% \\ 
   \hline
\end{tabular}
\end{table}

来自?print.xtable:

sanitize.text.function 除行名和列名之外的所有非数字条目都经过消毒,以尝试删除对输出格式具有特殊含义的字符。如果sanitize.text.function不是NULL(默认值),则它应该是一个接受字符向量并返回一个字符向量的函数,并将用于代替默认的内部函数进行消毒。

sanitize.colnames.function也是同样的情况。

如果您想完全改变名称(这样您就不能像上面那样使用regex),则另一种选择是将dat转换为矩阵并设置colnames

datmat<-as.matrix(dat)
colnames(datmat)<-c("Variable","Categoría de Referencia",
                    "Categoría Considerada", "Variación")
print.xtable(xtable(datmat),include.rownames=F)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接