私は、knitr、R マークダウン、および pandoc を使用して、秋に教えるコースのビーマー プレゼンテーション/講義を作成しています。プロセスを自動化するための短い R スクリプトを作成しました (「make」ファイルに似ています)。
.Rmd
ファイルを編む;- pandoc を呼び出して
.tex
ファイルを作成します。 - ファイルをコンパイルし
.tex
ます。 - クリーンアップ(不要ファイルの削除)など
1 つの例外 (現在まで) を除いて、すべてが非常にうまく機能しているようです。ニット関数を直接呼び出したときだけうまく「編む」ように見える講義が1つあります。関数を使用make
してファイルを編成しようとすると.Rmd
、特定の R オブジェクトが認識されません。問題を説明するために、以下に短い例を含めました。
単一のコード チャンクを含む「test.Rmd」というファイルを作成しました (以下)。
## Simulation
```{r test, comment=NA, message=FALSE, warning=FALSE}
library(mosaic)
obs<-c(25, 22, 30, 40) # Number of observations in each category
Ais<-c(0.34, 0.101, 0.104, 0.455) # Total Accreage (NUll proportions)
e.count<-Ais*117 # Expected Counts
test.stat<-sum((obs-e.count)^2/(e.count)) #Test statistic = 43.6
rand.dist<-do(1000)*{
# Randomization Distribution
new.dat<-sample(1:4, replace=TRUE, size=117, prob=Ais) # Sample with Prob = Null pi's
new.obs<-tally(~new.dat) # Simulated counts
chi.sq<-sum((new.obs-e.count)^2/e.count) # Simulated test statistic
}
```
このファイルは、knit("test.Rmd") と入力すると問題なく "knit" します。ただし、my.knit<-fucntion(){knit("test.Rmd")} という関数を作成し、この関数を使用して my.knit() と入力して編み物を行うと、エラー メッセージが表示されます。次のような出力:
Error: object 'Ais' not found
別の関数から「knit」を呼び出すと、コードの動作が変わる理由は何ですか?
----------------- 2014 年 5 月 1 日の更新 ----------------------
コードをもう一度テストしました。今回は、Ais を「(」と「)」で囲みました。繰り返しますが、knit("test.Rmd") と入力すると問題なく動作しますが、my.knit() を使用するとうまくいきません。my.knit() と入力したときの .md ファイルの出力は次のとおりです。
## Simulation
```r
library(mosaic)
obs <- c(25, 22, 30, 40) # Number of observations in each category
(Ais <- c(0.34, 0.101, 0.104, 0.455)) # Total Acreage (NUll proportions)
```
```
[1] 0.340 0.101 0.104 0.455
```
```r
e.count <- Ais * 117 # Expected Counts
test.stat <- sum((obs - e.count)^2/(e.count)) #Test statistic = 43.6
rand.dist <- do(1000) * {
# Randomization Distribution
new.dat <- sample(1:4, replace = TRUE, size = 117, prob = Ais) # Sample with Prob = Null pi's
new.obs <- tally(~new.dat) # Simulated counts
chi.sq <- sum((new.obs - e.count)^2/e.count) # Simulated test statistic
}
```
```
Error: object 'Ais' not found
```
このアプローチを使用して問題なく他のプレゼンテーションを 10 ほど作成したので、それは奇妙です。Hadley さん、rmarkdown パッケージを調べるように提案してくれてありがとう。私は RStudio を使用していますが、私の目標の多くを達成するための機能が組み込まれていることを認識しています。私が現在設定している方法の利点の 1 つは、すべてのプレゼンテーションに共通のヘッダー ファイル (ラテックス) を使用し、\includeonly を使用して、特定の日の講義に必要な部分を保持できることです。