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

int*_*ael 3 r sweave xtable

所以我想在数据框列的名称中使用单词之间的空格,并将数据框打印为乳胶格式的 pdf。但是,当我xtable()这样做时,列的名称会被连接起来。

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

在此处输入图片说明

有人知道如何解决这个问题吗?这是将数据帧转换为乳胶的 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)
Run Code Online (Sandbox Code Playgroud)

这是生成数据框的代码:

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")
Run Code Online (Sandbox Code Playgroud)

Mic*_*ico 5

您最好的选择可能是使用这些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}
Run Code Online (Sandbox Code Playgroud)

来自?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)
Run Code Online (Sandbox Code Playgroud)