高中统计老师在这里,很抱歉这个简单的问题(或者可能不那么简单)。
我正在运行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网站。任何帮助将不胜感激。
答案 0 :(得分:5)
大量借用@DWin提供的解决方案:
您可以使用print
从capture.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 ------