
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')>>=
결합 하고 실제로 코드를 평가할 수 있습니다.part1
part2
다음 MWE에서는 1부와 2부에서 코드가 이미 표시되어 있으므로 아무 것도 표시되지 않도록 에 이러한 part3
설정을 추가했습니다. 그런 다음 원할 경우 실제로 전달하는 위치에 을 추가할 수 있습니다. 정의한 함수에 대한 인수입니다.echo
FALSE
part4
\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}