基础R - 输出基础R相关性表格 -> LaTex或文本

6
我正在使用http://myowelt.blogspot.com/2008/04/beautiful-correlation-tables-in-r.html生成相关性表格。
但是,我无法将文件输出为可用的LaTex文件或文本文件。我尝试使用sink()保存数据到文本文件,但并没有成功。
假设我使用以下命令:
corstarsl(lpp_axis1)

我该如何将输出导入到文本文件中?我已经阅读了关于sink的文档,但是我似乎漏掉了一步。(我打开连接,执行命令,删除文件,然后什么也没有找到。)
我还尝试在tex文件中使用xtable(cortstarsl(lpp_axis1))的输出,但是我收到了“元素表未找到错误”的提示。我对Tex不够了解,无法追踪问题的源头。
有关输出此数据的建议? 创建相关表的其他建议?

通常,“unlinking a file” 意味着删除它。您确定这就是您要做的吗? - Sharpie
也许你的意思是“关闭连接”?无论如何... 你应该尝试将一个对象强制转换为“table”类。 - aL3xa
默认的Sweave有帮助吗? - Matt Bannert
1个回答

5
使用您提供的网页代码(使用内置的airquality数据),我得到以下结果:
> require(Hmisc)
> require(xtable)
> xtable(corstarsl(airquality))
% latex table generated in R 2.12.1 by xtable 1.5-6 package
% Mon Feb 21 20:00:34 2011
\begin{table}[ht]
\begin{center}
\begin{tabular}{rlllll}
  \hline
 & ozone & solar.r & wind & temp & month \\ 
  \hline
ozone &  &  &  &  &  \\ 
  solar.r &  0.35*** &  &  &  &  \\ 
  wind & -0.60*** & -0.06  &  &  &  \\ 
  temp &  0.70*** &  0.28*** & -0.46*** &  &  \\ 
  month &  0.16  & -0.08  & -0.18*  &  0.42*** &  \\ 
  day & -0.01  & -0.15  &  0.03  & -0.13  & -0.01  \\ 
   \hline
\end{tabular}
\end{center}
\end{table}

那么问题就是如何将这个TeX输出到文件中。在这里,capture.output()是一个好帮手:

> capture.output(xtable(corstarsl(airquality)), file = "mytable.tex")

这将把代码输出到名为mytable.tex的文件中:

$ cat mytable.tex 
% latex table generated in R 2.12.1 by xtable 1.5-6 package
% Mon Feb 21 20:01:03 2011
\begin{table}[ht]
\begin{center}
\begin{tabular}{rlllll}
  \hline
 & ozone & solar.r & wind & temp & month \\ 
  \hline
ozone &  &  &  &  &  \\ 
  solar.r &  0.35*** &  &  &  &  \\ 
  wind & -0.60*** & -0.06  &  &  &  \\ 
  temp &  0.70*** &  0.28*** & -0.46*** &  &  \\ 
  month &  0.16  & -0.08  & -0.18*  &  0.42*** &  \\ 
  day & -0.01  & -0.15  &  0.03  & -0.13  & -0.01  \\ 
   \hline
\end{tabular}
\    end{center}
\end{table}

如果需要输出“普通”的分隔文本,例如导出到文字处理器或电子表格软件中,请使用write.table()函数,例如:

> write.table(corstarsl(airquality), file = "mytable2.txt")

这将生成一个类似于以下文件的文件:
$ cat mytable2.txt 
"ozone" "solar.r" "wind" "temp" "month"
"ozone" "" "" "" "" ""
"solar.r" " 0.35***" "" "" "" ""
"wind" "-0.60***" "-0.06 " "" "" ""
"temp" " 0.70***" " 0.28***" "-0.46***" "" ""
"month" " 0.16 " "-0.08 " "-0.18* " " 0.42***" ""
"day" "-0.01 " "-0.15 " " 0.03 " "-0.13 " "-0.01 "

您可以根据自己的需要更改引用和分隔符-请见?write.table


非常感谢。这非常有帮助!(我通常不使用感叹号。) - d-cubed
有没有想过为同一张表格添加额外的列来显示R^2值? - d-cubed
我现在需要调整TeX文件,使其不太宽。 - d-cubed
@Donnied,你能解释一下你想要什么吗?你指的是哪些R2值——已经在表格中的相关系数的平方值吗?为什么需要额外的列?现有矩阵的上三角不足以满足需求吗? - Gavin Simpson

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