2010-04-21 2 views
4

필자는 Sweave 문서를 작성 중이며 R 및 패키지 버전, platofrms 및 ti가 doucment를 평가하는 데 걸린 시간을 자세히 설명하는 작은 섹션을 포함시키고 싶습니다. 그러나이를 문서의 중간에 넣고 싶습니다. !Sweave/R에서 표현식을 평가하기 전에 Sexpr을 포함 할 수 있습니까?

이 작업을 수행하기 위해 \ Sexpr {경과 된}을 사용했지만, 마지막에 계산 된 코드에서 경과 된 코드 인쇄를 넣으면 절반 정도의 청크가 포함될 수 있다고 생각했습니다. 통해 또한 실패합니다.

내 문서는이 작업을하지 않는 것 같습니다 그러나 (놀랍게도!)

사람이 내가이 작업을 수행 할 수있는 방법을 알고 있나요이

% 
\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} 

같이 보입니다?

감사합니다.

폴.

답변

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} 

내가 다음 라텍스 당황 x86_64를 통해와 밑줄을 얻을으로 \Sexp{} 내부의 버전 문자열을 제거했다. 그렇지 않으면 그냥 잘 잤어. 그리고 이제 너는 잠자고있는 양의 경과 시간을 얻는다.

R을 사용하여 다음 실행을 위해 임시 파일에서 경과 시간을 캐시하거나 LaTeX에 일종의 변수로 전달할 수 있지만 '앞으로 참조'를 R로 사용할 수 없습니다 덩어리가 순서대로 평가됩니다.

2

은 BTW 당신은 ​​일반적으로 잘뿐만 아니라 작동 변수

\Sexpr{version$version.string} 

을 R 평가하기 인쇄가 필요하지 않습니다

2

더크의 대답은 당신을 통해 답 절반 방법을 넣어하지 않습니다 아직 거의 완벽하지만, 문서. 나는 그것이 작동해야한다고 생각하여 매우 좌절감을 느꼈다. 그러나 내가 가진 코드는 각 실행의 시작에서 (그리고 비우는) 시간 파일을 열고 빈 결과를 내 문서에 쓴 다음 시간 파일에 응답을 넣는 것이었다. 끝!

나는 결국 비슷한 것을했지만 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} 
관련 문제