2012-07-03 4 views
2

죄송합니다.이 바보 같은 질문이지만 knitr에서 R 함수를 반복하는 방법을 아는 사람이 있습니까? 지금까지 내 문제는 라텍스에서 R 함수로 변수를 전달하는 것입니다. 나는 이런 식으로 뭔가를 시도하고있다 :knitr with latex forloop

\documentclass{article} 
\usepackage{forloop} 
\newcounter{ind} 
\begin{document} 

%Simple R function: 
<<simpleRFun, results='asis' ,echo=FALSE>>= 
simpleRFun = function(ind){ 
    set.seed(ind) ; 
    plot(runif(100)) ; 
} 
@ 

%Run the function for value of 1 
<<>>= 
simpleRFun(1) 
@ 

%Run the function for value of 2 
<<>>= 
simpleRFun(2) 
@ 

%Loop over values of 1 and 2: 
\forloop{ind}{1}{\value{ind} < 3}{ 
    \arabic{ind} 
} 

%Loop over values of 1 and 2 and pass to R function: 
%Everything runs fine until this line: 
\forloop{ind}{1}{\value{ind} < 3}{ 
<<>>= 
simpleRFun(ind) 
@ 
} 

\end{document} 

나는 다음과 같은 오류가 점점 오전 :

Runaway argument? 
#### Error: object 'ind' not found \end {verbatim} \end {kframe} \end \ETC. 
./knitr-minimal.tex:97: Paragraph ended before \@xverbatim was complete. 
<to be read again> 
        \par 
l.97 } 

감사합니다 도움을 사전에.

+0

왜 첫 번째 청크에'results = 'asis''을 사용합니까? 그 청크에는 텍스트 출력이 없으므로 의미가 없습니다. 게다가'echo = FALSE'로 R 소스를 감추었 기 때문에 기본적으로 tex –

+0

에 아무 것도 쓰이지 않을 것입니다.'brew'로 할 수 있고 출력 가능한 파일을 출력 할 수 있습니다. – baptiste

답변

3

나는 당신이하려고하는 것을 할 수 있다고 생각하지 않는다. (적어도 당신이 그것을하려고하는 방식은 아니다.) knitr 함수는 LaTeX 코드를 사용하지 않고 모든 R 코드를 실행 한 다음 결과에 LaTeX를 사용하고 R 부분에 R을 실행하지 않습니다.

루프를 다시 실행하여 knitr이 루프의 결과를 LaTeX에 넣을 수 있습니까?

R 부분을 실행하는 LaTeX의 확장 프로그램이 필요합니다.

+0

그렉, 피드백에 감사드립니다. 그러나 나는 그것이 이런 식으로 작동 할 것이라는 것을 확신하고 있으며, 만약 그렇다면 루프의 매우 수준에서 라텍스를 삽입 할 수 있다는 장점이 있습니다. 코드 % 모두는이 라인까지 정상적으로 실행 : \ forloop {IND} {1} {\ 값 {IND} <3} { <<>> = simpleRFun (1) @ } 는 R 코드 미세 실행 (두 번), 동일한 변수 (여기서는 1의 값)에 대해서만. 루프에서 변수를 가져 와서 R에 전달해야합니다. 문제는 라텍스에서 환경 변수를 전달하는 방법에 대한 내 이해가 부족하다고 생각합니다. 다시 한번 감사드립니다. –

+2

R이 해당 섹션을 두 번 실행한다고 확신합니까? R 작업 공간에'ind'라는 변수가 있습니까? (그렇다면 제거하고 다시 시도하십시오. 대신 오류가 발생할 수 있습니다). 위에서 생각한 것은 LaTeX for 루프를 무시하고 ind의 R 카피 복사본을 사용하면'knitr'이'SimpleRfun (ind)'를 실행하면 LaTeX가 그 출력을 받아 두 번 포함한다는 것입니다. 'knitr'은 모든 LaTeX 코드 (루프 포함)를 무시하고 전달하고 R 코드를 outpu로 바꾼다. LaTeX는 출력 만 남기고 파일을 처리한다. –

+0

아, 당신이 옳다고 생각합니다. 방금 그래프에 'ind'를 추가했습니다 (main = ind). 그래프를 두 번 복제하면됩니다. 대신 내 R 덩어리 내의 루프에 직접 라텍스를 추가하는 방법을 알고 계십니까? 루프의 모든 간격마다 업데이트하려면 라텍스가 필요합니다. 감사. –

관련 문제