用knitR显示R输出的子集
有没有办法用knitR仅显示R输出的一部分?我只想在beamer演示文稿中显示lm模型的部分摘要输出,这样它就不会从幻灯片中消失。(作为旁注,为什么我的代码没有包装?)用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
\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