1
我有一些代碼是爲了以編程方式生成數據集的直方圖,因爲此問題的第一個答案中的代碼的確如此:R knitr: Possible to programmatically modify chunk labels?。以編程方式生成R markdown代碼時不起作用的因素
我的代碼模板是:
```{r, results='asis'}
cat("### {{nVar2}} categories")
```
```{r}
hist(df1$Var1[df1$Var2 == {{nVar2}}])
```
其保存爲 'template.Rmd'。
我降價輸出的代碼是:
```{r}
df1 <- data.frame(Var1 = c(0.4,0.3,0.6,1,0,0.1,0.3,0.8,0.2,0.9,0.8,1,1,0.5,0.2,0.6,0.3,0.4,0.1,0.6,0.9,0.9,0.9,0))
df1$Var2[df1$Var1 <= 1] <- "D"
df1$Var2[df1$Var1 <= 0.75] <- "C"
df1$Var2[df1$Var1 <= 0.5] <- "B"
df1$Var2[df1$Var1 <= 0.25] <- "A"
Var2.levels <- unique(df1$Var2)
```
```{r, include=FALSE}
library(knitr)
src <- lapply(Var2.levels, function(nVar2) knit_expand(file = "template.Rmd"))
```
`r knit(text = unlist(src))`
當我運行它,我得到以下錯誤
Error in hist(df1$Var1[df1$Var2 == B]) : object 'B' not found Calls: <Anonymous> ... withCallingHandlers -> withVisible -> eval -> eval -> hist
古怪不過,當我刪除下面的代碼塊,所以它僅輸出各Var2與'類別'的水平,它工作得很好:
```{r}
hist(df1$Var1[df1$Var2 == {{nVar2}}])
```
此外,當我運行只是src <- lapply(Var2.levels, function(nVar2) knit_expand(file = "template.Rmd"))
它運行併產生一個列表。