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

时间:2015-08-20 14:37:41

标签: r sweave xtable

所以我想在数据框的列名中使用单词之间的空格,并将数据框打印为乳胶格式的pdf。但是,当我使用xtable()执行此操作时,列的名称将被连接。

例如,我希望第二列的标题看起来像#34; Categoria de Referencia"。相反,我得到的是:

enter image description here

有人知道如何解决这个问题吗?这里是将数据框转换为乳胶的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")

1 个答案:

答案 0 :(得分:4)

您最好的选择可能是使用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)