4

有没有办法用 knitR 只显示 R 输出的一部分?我想在投影仪演示文稿中仅显示来自 lm 模型的摘要输出的一部分,这样它就不会从幻灯片上消失。(作为旁注,为什么我的代码没有包装?)下面提供了一个最小的示例。

\documentclass{beamer}
\begin{document}
\title{My talk}
\author{Me}
\maketitle
\begin{frame}[fragile, t]{Slide 1}
<<setup, include=FALSE, cache=FALSE, tidy=TRUE>>=
options(width=60, digits=5, show.signif.stars=FALSE)
@
<<mod1, tidy=TRUE>>==
data(cars)  # load data
g <- lm(dist ~ speed + I(speed^2) + I(speed^3), data = cars)
summary(g)
@
\end{frame}
\end{document}

具体来说,假设我只想返回以下输出:

Coefficients:
             Estimate Std. Error t value Pr(>|t|)
(Intercept) -19.50505   28.40530  -0.687    0.496
speed         6.80111    6.80113   1.000    0.323
I(speed^2)   -0.34966    0.49988  -0.699    0.488
I(speed^3)    0.01025    0.01130   0.907    0.369

Residual standard error: 15.2 on 46 degrees of freedom
Multiple R-squared:  0.6732,    Adjusted R-squared:  0.6519 
F-statistic: 31.58 on 3 and 46 DF,  p-value: 3.074e-11
4

2 回答 2

4

可能有更好的方法可以做到这一点,但以下内容应该适合您。它用于capture.output选择要显示的打印输出的哪些部分:

\documentclass{beamer}
\begin{document}
\title{My talk}
\author{Me}
\maketitle
\begin{frame}[fragile, t]{Slide 1}
<<setup, include=FALSE, cache=FALSE, tidy=TRUE>>=
options(width=60, digits=5, show.signif.stars=FALSE)
@
<<mod1, tidy=TRUE>>==
data(cars)  # load data
g <- lm(dist ~ speed + I(speed^2) + I(speed^3), data = cars)
tmp <- capture.output(summary(g))
cat(tmp[9:length(tmp)], sep='\n')
@
\end{frame}
\end{document}
于 2013-11-14T21:45:10.477 回答
0

此处调用的summary.lm()方法返回格式良好的相关输出列表print.summary.lm。如果您想要列表的单个组件,请尝试使用双括号:

输入:

summary(g)[[4]]
summary(g)[[6]]
summary(g)[[7]]
summary(g)[[8]]

输出:

> summary(g)[[4]]
                Estimate  Std. Error    t value  Pr(>|t|)
(Intercept) -19.50504910 28.40530273 -0.6866693 0.4957383
speed         6.80110597  6.80113480  0.9999958 0.3225441
I(speed^2)   -0.34965781  0.49988277 -0.6994796 0.4877745
I(speed^3)    0.01025205  0.01129813  0.9074113 0.3689186
> summary(g)[[6]]
[1] 15.20466
> summary(g)[[7]]
[1]  4 46  4
> summary(g)[[8]]
[1] 0.6731808

但是,必须有一种更好的方法来将汇总方法的优点与列表索引结合起来。

于 2013-11-14T21:47:43.943 回答