我正在编写一个Sweave文档,我想要包含一个小部分,详细介绍R和软件包版本,平台以及评估文件的时间,但是,我想把它放在中间。文件!
我正在使用\ Sexpr {elapsed}来执行此操作(这不起作用),但我想如果我将代码打印放在最后评估的一个块中,那么我可以在中途包含块,这也失败了。
我的文档看起来像这样
%
\documentclass[a4paper]{article}
\usepackage[OT1]{fontenc}
\usepackage{longtable}
\usepackage{geometry}
\usepackage{Sweave}
\geometry{left=1.25in, right=1.25in, top=1in, bottom=1in}
\begin{document}
<<label=start, echo=FALSE, include=FALSE>>=
startt<-proc.time()[3]
@
Text and Sweave Code in here
%
This document was created on \today, with \Sexpr{print(version$version.string)} running
on a \Sexpr{print(version$platform)} platform. It took approx sec to process.
<<>>=
<<elapsed>>
@
More text and Sweave code in here
<<label=bye, include=FALSE, echo=FALSE>>=
odbcCloseAll()
endt<-proc.time()[3]
elapsedtime<-as.numeric(endt-startt)
@
<<label=elapsed, include=FALSE, echo=FALSE>>=
print(elapsedtime)
@
\end{document}
但这似乎不起作用(令人惊讶!)
有谁知道我怎么能这样做?
由于
保罗。
答案 0 :(得分:3)
这对我来说很好用:
\documentclass{article}
\usepackage{Sweave}
\begin{document}
<<label=start, echo=FALSE, include=FALSE>>=
startt<-proc.time()[3]
@
Text and Sweave Code in here
This document was created on \today, with
\Sexpr{print(version$version.string)}.
<<results=hide,echo=FALSE>>=
Sys.sleep(2) # instead of real work
@
More text and Sweave code in here
<<label=bye, include=FALSE, echo=FALSE>>=
endt<-proc.time()[3]
elapsedtime<-as.numeric(endt-startt)
@
It took approx \Sexpr{elapsedtime} seconds to process.
\end{document}
我必须删除\Sexp{}
中的版本字符串,因为我得到一个带有x86_64
的下划线,然后打乱了LaTeX。否则就好了,你现在得到刚刚超过睡眠量的经过时间。
您可以使用R来缓存下一次运行的临时文件中的已用时间,或者将其作为某种变量传递给LaTeX - 但是您将无法使用“前向引用”作为R块依次得到评估。
答案 1 :(得分:2)
顺便说一句,通常不需要打印来评估变量R
\Sexpr{version$version.string}
也可以正常使用
答案 2 :(得分:2)
Dirk的答案几乎是完美的,但仍然没有让你把答案放在文件的一半。我很沮丧地认为它应该有效,但我意识到我的代码是在每次运行开始时打开时间文件(并清空它)并将空结果写入我的文档,然后将答案放在时间文件中结束!
我最终做了类似的事情,但是使用R只在最后打开并写入文件,效果很好!;
\documentclass[a4paper]{article}
\usepackage[OT1]{fontenc}
\usepackage{longtable}
\usepackage{geometry}
\usepackage{Sweave}
\geometry{left=1.25in, right=1.25in, top=1in, bottom=1in}
\begin{document}
<<label=start, echo=FALSE, include=FALSE>>=
startt<-proc.time()[3]
@
Text and Sweave Code in here
%
This document was created on \today, with \Sexpr{print(version$version.string)} running
on a \Sexpr{print(version$platform)} platform. It took approx \input{time}
sec to process.
More text and Sweave code in here
<<label=bye, include=FALSE, echo=FALSE>>=
odbcCloseAll()
endt<-proc.time()[3]
elapsedtime<-as.numeric(endt-startt)
@
<<label=elapsed, include=FALSE, echo=FALSE>>=
fileConn<-file("time.tex", "wt")
writeLines(as.character(elapsedtime), fileConn)
close(fileConn)
@
\end{document}