knitr spin with 循环和比较语句
knitr spin with loop and comparison statements
我遇到了一个问题,我有一个类似于下面所示的 R 脚本(有几个循环来绘制一些图形和多个嵌套的 if 语句来确定要绘制哪组图形,但这个例子就足够了.)
当 spin('spin-script.R')
为 运行 时,if 语句中的所有 #'
注释都不会显示在最终文档中。
任何关于为什么会发生这种情况的见解将不胜感激。
opts_chunk$set(echo=FALSE)
#+ Title
print("This is the title")
#+ Choose, echo = FALSE
choices <-c("0","1", "2", "3", "4", "5")
choice <- select.list(choices, title = "Pick your favourite Number")
numbers <- as.double(choices)
choice <- numbers[choices==choice]
#+ SillyNumber
if(choice != 0){
#+ Loop
x <- 0
for (i in 1:choice){
#' Some text to show user
x <- x + rnorm(1, choice, 1/choice)
#+ IfStatement, echo = TRUE
if( choice == 3 ) {
#' That's my favourite number too
{{cat("\n")}}
#' Have a bonus boost
x <- 2 * x
}
}
}
# Display, echo = TRUE
sprintf("Your favourite number scored a total of %f points", x)
doc
参数控制哪些行被解释为文档,默认值 "^#+'[ ]?"
只匹配以 #
开头且之前没有 space 的行它。您可能希望将其设置为 spin(... , doc="^\s*#+'[ ]?")
以允许在 #'
字符串之前使用白色 space。有关详细信息,请参阅 ?spin
。
或者您可以像这样记录您的代码:
#+ SillyNumber
if(choice != 0){
#+ Loop
x <- 0
for (i in 1:choice){
#' Some text to show user
x <- x + rnorm(1, choice, 1/choice)
#+ IfStatement, echo = TRUE
if( choice == 3 ) {
#' That's my favourite number too
{{cat("\n")}}
#' Have a bonus boost
x <- 2 * x
}
}
}
只是原因,这里没有解决方案。我尝试了上述解决方案,并得到类似的错误:
“解析错误(text = x,srcfile = src):
:7:0: 输入意外结束
然后查看生成的对应Rmd文件,发现#'注释("Train the model")打破了for循环。这就是意外输入的原因。
```{r}
for (k in 1:fold_num){
#其他代码
```
训练模型
```{r}
# 其他代码
}
我遇到了一个问题,我有一个类似于下面所示的 R 脚本(有几个循环来绘制一些图形和多个嵌套的 if 语句来确定要绘制哪组图形,但这个例子就足够了.)
当 spin('spin-script.R')
为 运行 时,if 语句中的所有 #'
注释都不会显示在最终文档中。
任何关于为什么会发生这种情况的见解将不胜感激。
opts_chunk$set(echo=FALSE)
#+ Title
print("This is the title")
#+ Choose, echo = FALSE
choices <-c("0","1", "2", "3", "4", "5")
choice <- select.list(choices, title = "Pick your favourite Number")
numbers <- as.double(choices)
choice <- numbers[choices==choice]
#+ SillyNumber
if(choice != 0){
#+ Loop
x <- 0
for (i in 1:choice){
#' Some text to show user
x <- x + rnorm(1, choice, 1/choice)
#+ IfStatement, echo = TRUE
if( choice == 3 ) {
#' That's my favourite number too
{{cat("\n")}}
#' Have a bonus boost
x <- 2 * x
}
}
}
# Display, echo = TRUE
sprintf("Your favourite number scored a total of %f points", x)
doc
参数控制哪些行被解释为文档,默认值 "^#+'[ ]?"
只匹配以 #
开头且之前没有 space 的行它。您可能希望将其设置为 spin(... , doc="^\s*#+'[ ]?")
以允许在 #'
字符串之前使用白色 space。有关详细信息,请参阅 ?spin
。
或者您可以像这样记录您的代码:
#+ SillyNumber
if(choice != 0){
#+ Loop
x <- 0
for (i in 1:choice){
#' Some text to show user
x <- x + rnorm(1, choice, 1/choice)
#+ IfStatement, echo = TRUE
if( choice == 3 ) {
#' That's my favourite number too
{{cat("\n")}}
#' Have a bonus boost
x <- 2 * x
}
}
}
只是原因,这里没有解决方案。我尝试了上述解决方案,并得到类似的错误: “解析错误(text = x,srcfile = src): :7:0: 输入意外结束
然后查看生成的对应Rmd文件,发现#'注释("Train the model")打破了for循环。这就是意外输入的原因。
```{r}
for (k in 1:fold_num){
#其他代码
```
训练模型
```{r}
# 其他代码
}