
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
chunk
というオプションがありeval
、これはコードが実際に R によって評価されるかどうかを制御します。 に設定するとFALSE
コードは評価されず、原則として何でも入力できます。
さらに、Yihuiはコメントで指摘しているを使用すると、と を<<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}