니트. 함수를 여러 블록으로 분할

니트. 함수를 여러 블록으로 분할

Knitr를 사용하여 R 함수를 여러 블록에 걸쳐 분할하는 것이 가능합니까(문서화상의 이유로)? MWE는 다음과 같습니다.

\documentclass{article}
\begin{document}
Part1 gives salutation. 
<<part1>>=
hello <- function(x){
  print("Hi")
@
Part2 adds the name.
<<part2>>=
  print(x)}
@
\end{document}

답변1

코드가 실제로 R에 의해 평가되는지 여부를 제어하는 ​​이라는 옵션이 있습니다. 이 chunk옵션을 eval로 설정하면 FALSE코드가 평가되지 않으므로 원칙적으로 입력하고 싶은 것을 입력할 수 있습니다.

추가적으로 다음과 같이이휘가 댓글에서 지적한거를 사용하여 과 를 <<part3, ref.label=c('part1', 'part2')>>=결합 하고 실제로 코드를 평가할 수 있습니다.part1part2

다음 MWE에서는 1부와 2부에서 코드가 이미 표시되어 있으므로 아무 것도 표시되지 않도록 에 이러한 part3설정을 추가했습니다. 그런 다음 원할 경우 실제로 전달하는 위치에 을 추가할 수 있습니다. 정의한 함수에 대한 인수입니다.echoFALSEpart4

\documentclass{article}

\begin{document}

Part1 gives salutation. 
<<part1, eval=FALSE>>=
hello <- function(x){
  print("Hi")
@
Part2 adds the name.
<<part2, eval=FALSE>>=
  print(x)}
@

<<part3, ref.label=c('part1', 'part2'), echo=FALSE>>=
@

<<part4>>=
hello("Dan Wright")
@

\end{document}

여기에 이미지 설명을 입력하세요

답변2

사용 가능한 청크 옵션을 읽어보세요.그리고어떻게 사용하는지 알아보세요.

이 특별한 경우에는echo 그리고 eval옵션을 함께 사용할 수 있습니다 ...

<<the_func, echo=FALSE>>=
hello <- function(x){
  print("Thanks")
  print(x)
}
@

<<the_func, echo=1:2, eval=FALSE>>=
@

<<the_func, echo=3:4, eval=FALSE>>=
@

답변3

ref.label 옵션이 이 문제를 해결합니다. 다음은 작업 예입니다.

\documentclass{article}
\begin{document}
Part1 gives salutation. 
<<part1,eval=FALSE>>=
hello <- function(x){
  print("Thanks")
@
Part2 adds the name.
<<part2,eval=FALSE>>=
  print(x)}
@
<<part3,echo=FALSE,ref.label=c('part1','part2')>>=
@
<<executefunction>>=
hello('Adam and Yihue')
@
\end{document}

관련 정보