Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用knitr中的输出挂钩格式化结果输出?_R_Knitr_Beamer - Fatal编程技术网

如何使用knitr中的输出挂钩格式化结果输出?

如何使用knitr中的输出挂钩格式化结果输出?,r,knitr,beamer,R,Knitr,Beamer,我有一个Rnw文件a.Rnw,包含以下内容: \documentclass{beamer} \begin{document} \begin{frame}[fragile] <<>>= 1+1 @ \end{frame} \end{document} a.pdf中的输出如下所示: R> 1+1 ## [1] 2 \begin{alltt} \hlstd{R> }\hlnum{1}\hlopt{+}\hlnum{1} \end{alltt} \begin{ve

我有一个Rnw文件
a.Rnw
,包含以下内容:

\documentclass{beamer}
\begin{document}
\begin{frame}[fragile]
<<>>=
1+1
@
\end{frame}
\end{document}
a.pdf
中的输出如下所示:

R> 1+1
## [1] 2
\begin{alltt}
\hlstd{R> }\hlnum{1}\hlopt{+}\hlnum{1}
\end{alltt}
\begin{verbatim}
## [1] 2
\end{verbatim}

如何使输出看起来像这样:

R> 1+1
## [1] 2
\begin{alltt}
\hlstd{R> }\hlnum{1}\hlopt{+}\hlnum{1}
\end{alltt}
\begin{verbatim}
## [1] 2
\end{verbatim}

< P > >如何在R代码前放置<代码> R> <代码>,删除代码和输出之间的空行?

< P> >在所有R命令前面显示“代码> R> < /代码>,我使用“代码>选项> <代码>设置R提示,并告诉KNITR使用 OPTSuxCuxb/code >(在答案的底部代码)显示提示。

删除新行有点棘手,因为生成的tex文件中的R代码和R输出如下所示:

R> 1+1
## [1] 2
\begin{alltt}
\hlstd{R> }\hlnum{1}\hlopt{+}\hlnum{1}
\end{alltt}
\begin{verbatim}
## [1] 2
\end{verbatim}
因此,R代码与其输出之间的换行不是由knitr显式生成的,而是由于在
\end{alltt}
\begin{verbatim}
之间开始了一个新段落。逐字记录环境在其上下添加当前值
\topsep
()。因此,我对
knitrout
环境进行了修补,以便将该变量本地设置为
0pt
。以下是新版本的
a.Rnw

\documentclass{beamer}

% reduce whitespace between R code and R output
\let\oldknitrout\knitrout
\renewenvironment{knitrout}{
  \begin{oldknitrout}
  \topsep=0pt
}{
  \end{oldknitrout}
}

% show R> prompt before R commands
<<r setup, echo=FALSE>>=
options(prompt='R> ')
knitr::opts_chunk$set(prompt=TRUE) 
@

\begin{document}
\begin{frame}[fragile]
<<>>=
1+1
@
\end{frame}
\end{document}
\documentclass{beamer}
%减少R代码和R输出之间的空白
\let\oldknitrout\knitrout
\更新环境{knitrout}{
\开始{oldnitrout}
\topsep=0pt
}{
\结束{oldnitrout}
}
%在R命令之前显示R>提示
=
选项(prompt='R>')
knitr::opts_chunk$set(prompt=TRUE)
@
\开始{document}
\开始{frame}[易碎]
=
1+1
@
\结束{帧}
\结束{document}
输出如下所示:

R> 1+1
## [1] 2
\begin{alltt}
\hlstd{R> }\hlnum{1}\hlopt{+}\hlnum{1}
\end{alltt}
\begin{verbatim}
## [1] 2
\end{verbatim}

我尝试了几种缩小R输出间距的方法:这是第一种有效的方法<代码>\renewenvironment{knitrout}{等。