所以我想在数据框列的名称中使用单词之间的空格,并将数据框打印为乳胶格式的 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)
您最好的选择可能是使用这些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)