用knitR显示R输出的子集

用knitR显示R输出的子集,r,formatting,latex,knitr,R,Formatting,Latex,Knitr,有没有办法用knitR仅显示R输出的一部分?我只想在beamer演示文稿中显示lm模型的部分摘要输出,这样它就不会从幻灯片中消失。(作为旁注,为什么我的代码没有包装?) \documentclass{beamer} \begin{document} \title{My talk} \author{Me} \maketitle \begin{frame}[fragile, t]{Slide 1} <<setup, include=FALSE, cache=FALSE, tidy=TRU

有没有办法用knitR仅显示R输出的一部分?我只想在beamer演示文稿中显示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}

也许有更好的方法可以做到这一点,但以下几点应该适合您。它使用
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}
\documentclass{beamer}
\开始{document}
\标题{我的演讲}
\作者{Me}
\maketitle
\开始{frame}[脆弱,t]{Slide 1}
=
选项(宽度=60,数字=5,show.signif.stars=FALSE)
@
==
数据(车辆)#装载数据
g此处调用的
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

但是,必须有更好的方法将摘要方法的精确性与列表索引结合起来。

。谢谢@如果你发现答案是有用的,考虑一下投票,或者通过点击答案左边的复选标记来接受它。我现在还不能投票,但是我接受了答案。再次感谢@一慧首先,感谢您在开发knitR方面的辛勤工作,并为我指出了答案。这项功能似乎是人们希望经常和轻松使用的功能。您是否考虑过在=部分中添加一些东西来实现这一点,类似于eval=c(1,3,4)。您可以做=获得输出的第4行到第6行。@jpfrench是的,我考虑过,但我无法决定它是否应该是一个内置功能,因为这种方法仍然存在问题:当您在一个块中有多个输出块时,out.lines=c(4:6)
意味着什么?它适用于输出的第一部分、最后一部分还是全部?目前我倾向于让用户自己决定。
> 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