我的问题非常similar to this one
我正在尝试将带有负数的表导出到乳胶。
我想用print(xtable())
来访问所有打印选项。
目前,我找到的唯一解决方案是:(以前面的示例为例)
library(xtable)
testMatrix <- matrix(c(sample(-10:10,10)), ncol = 2)
xt <- capture.output(xtable(testMatrix))
sink(paste(file.name, ".tex", sep = "", collapse = NULL))
cat(gsub("(\\s|^)(-\\d\\.\\d*)", "\\1\\\\textcolor{red}{\\2}", xt), sep="\n")
sink()
它可以工作,但是我需要修改一些无法在xtable
中直接访问的信息,例如:include.rownames
,math.style.exponents
或caption.placement
。最好的方法是直接使用print
和xtable
导出负十进制数字的简单方法。
任何想法?
答案 0 :(得分:4)
您需要做两件事:
capture.output(print(xtable(testMatrix)))
代替capture.output(xtable(testMatrix))
。然后,您可以使用print.xtable()
的功能。观察:
library(xtable)
set.seed(123)
testMatrix <- matrix(c(sample(-10:10,10)), ncol = 2)
xt <- capture.output(print(xtable(testMatrix))) # Notice use of print()
negative_number_pattern <- "(\\s|^)(-\\d+\\.*\\d*)" # Notice changed pattern
cat(gsub(negative_number_pattern, "\\1\\\\textcolor{red}{\\2}", xt), sep="\n")
% latex table generated in R 3.6.0 by xtable 1.8-4 package
% Mon May 13 08:02:53 2019
\begin{table}[ht]
\centering
\begin{tabular}{rrr}
\hline
& 1 & 2 \\
\hline
1 & 4 & \textcolor{red}{-9} \\
2 & 8 & \textcolor{red}{-5} \\
3 & 3 & 0 \\
4 & \textcolor{red}{-8} & \textcolor{red}{-6} \\
5 & \textcolor{red}{-1} & \textcolor{red}{-7} \\
\hline
\end{tabular}
\end{table}
xt <- capture.output(print(xtable(testMatrix), include.rownames = FALSE))
cat(gsub(negative_number_pattern, "\\1\\\\textcolor{red}{\\2}", xt), sep="\n")
% latex table generated in R 3.6.0 by xtable 1.8-4 package
% Mon May 13 08:02:53 2019
\begin{table}[ht]
\centering
\begin{tabular}{rr}
\hline
1 & 2 \\
\hline
4 & \textcolor{red}{-9} \\
8 & \textcolor{red}{-5} \\
3 & 0 \\
\textcolor{red}{-8} & \textcolor{red}{-6} \\
\textcolor{red}{-1} & \textcolor{red}{-7} \\
\hline
\end{tabular}
\end{table}
如您所见,通过使用print()
,我们可以使用您要查找的选项(在此我通过将include.rownames
更改为FALSE
进行演示)。
如果要直接从R命令将表打印到filename.tex
,则可以使用cat()
的{{1}}参数。来自file
:
用法
cat(...,file =“”,sep =“”,fill = FALSE,标签= NULL, append = FALSE)参数
... R对象(有关允许的对象类型,请参见“详细信息”)。文件连接或命名要打印到的文件的字符串。如果为“”(默认值),则cat打印到标准输出连接,除非通过接收器重定向,否则将控制台输出。如果为“ | cmd”,则通过打开管道连接将输出通过管道传递给“ cmd”给出的命令。
所以,这个:
help("cat")
在library(xtable)
set.seed(123)
testMatrix <- matrix(c(sample(-10:10,10)), ncol = 2)
xt <- capture.output(print(xtable(testMatrix))) # Notice use of print()
negative_number_pattern <- "(\\s|^)(-\\d+\\.*\\d*)" # Notice changed pattern
cat(gsub(negative_number_pattern, "\\1\\\\textcolor{red}{\\2}", xt), sep="\n",
file = "filename.tex")
中产生以下内容:
filename.tex