从R到LaTeX的茎叶

时间:2011-09-07 02:44:34

标签: r latex

高中统计老师在这里,很抱歉这个简单的问题(或者可能不那么简单)。

我正在运行R来创建一个茎叶图。我正在尝试将stem()的茎叶输出转换为LaTeX。这是我到目前为止所得到的:

y<- c(50, 26, 31, 57, 19, 24, 22, 23, 38, 13, 50, 13, 34, 23, 30, 49, 13, 15, 51)
stem(y)

我尝试使用xtables(因为它适用于我的简单双向表),因此:

print(xtable(stem(y)), type="latex", latex.environments=c("center"), tabular.environment =    "tabular", NA.string = "")

我收到此错误:

Error in UseMethod("xtable") : no applicable method for 'xtable' applied to an object of class "NULL"

我尝试了各种选项,但得到了类似的结果。从我可以看出,stem()的输出不是数据框或矩阵,因此xtables不喜欢它。我尝试使用as.data.frame()和as.matrix()将其更改为数据框/矩阵,但没有成功。任何帮助,将不胜感激。我运行了一些谷歌搜索没有有用的结果,并查看了stackoverflow网站。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:5)

大量借用@DWin提供的解决方案:

您可以使用printcapture.output语句中捕获输出,并使用包latexTranslate中的HMisc将其转换为Latex:

library(Hmisc)
latexTranslate(capture.output(stem(y)))

[1] ""                                                         
[2] "  The decimal point is 1 digit(s) to the right of the $|$"
[3] ""                                                         
[4] "  1 $|$ 33359"                                            
[5] "  2 $|$ 23346"                                            
[6] "  3 $|$ 0148"                                             
[7] "  4 $|$ 9"                                                
[8] "  5 $|$ 0017"                                             
[9] ""         

答案 1 :(得分:3)

我假设您只想将结果导出到乳胶,我是对的吗?

您可能想尝试以下通过测试的Sweave代码:

\documentclass{article}

\usepackage{listings}

\begin{document}

\begin{lstlisting}
<<echo=F, results=tex>>=
y<- c(50, 26, 31, 57, 19, 24, 22, 23, 38, 13, 50, 13, 34, 23, 30, 49, 13, 15, 51)
stem(y)
@ 
\end{lstlisting}

\end{document}

答案 2 :(得分:1)

stem函数返回NULL。它只能通过打印到控制台设备的副作用来工作。

你也可以使用接收器,但我猜这与你的目标没有太大关系

sink("stem.out")
stem(y)
sink()

当我通过Hmisc函数latex运行时,我得到:

latex(readLines("stem.out")
#--------file output follows----
% latex.default(readLines("stem.out")) 
%
\begin{table}[!tbp]
 \begin{center}
 \begin{tabular}{l}\hline\hline
\multicolumn{1}{c}{}\tabularnewline
\hline
\tabularnewline
  The decimal point is 1 digit(s) to the right of the |\tabularnewline
\tabularnewline
  1 | 33359\tabularnewline
  2 | 23346\tabularnewline
  3 | 0148\tabularnewline
  4 | 9\tabularnewline
  5 | 0017\tabularnewline
\tabularnewline
\hline
\end{tabular}

\end{center}

\end{table}
#---------  end of file ------