尝试设置Knitr'文档'输出挂钩会导致代码块断行丢失

时间:2015-02-01 22:17:44

标签: r knitr r-markdown

我已经阅读了Knitr output hooks为编辑文档输出而找到的所有文档和示例。

我使用Knitr处理.Rmd文件,如下所示:

  

[SOME_SHORTCODE_TO_BE_REPLACED](我最终希望在解析文档时将其替换为Knitr)

```{r echo=TRUE, eval=FALSE} 

data1 <- rnorm(10, mean = 0, sd = 10)

data2 <- rnorm(10, mean = 2, sd = 2)

model <- lm(data1 ~ data2)

summary(model) 
```

如果我跑

opts_chunk$set(tidy = FALSE)
knit(filename, output = outputFilename.markdown)

在文件上,它(正确地)呈现如下:

  

[SOME_SHORTCODE_TO_BE_REPLACED](我最终希望在解析文档时将其替换为Knitr)

     

``的r

     

data1&lt; - rnorm(10,mean = 0,sd = 10)

     

data2&lt; - rnorm(10,mean = 2,sd = 2)

     

model&lt; - lm(data1~data2)

     

摘要(模型)

     

```

但是,如果我做任何事情设置knit_hook&#34;文档&#34; (在解析之后会通过完整文档) ,我的代码中的换行符和代码围栏(```)将被删除:

# As I understand, this *should* be identical to Knitr's default for the document hook, which is to just do:
# knit_hook$set(document = identity)

knit_hooks$set(document = function(x) {
    x
})
# (Then re-knit the file using the commands above)

结果:

  

[SOME_SHORTCODE_TO_BE_REPLACED](我最终希望在解析文档时将其替换为Knitr)

     

data1&lt; -rnorm(10,mean = 0,sd = 10)data2&lt; -rnorm(10,mean = 2,sd = 2)model&lt; -lm(data1~data2)summary(model)< / p>

我已经看过几个例子,其中包括来自Yihui here的一些例子,这些例子让我认为设置文件钩子并让它回馈x不应该做任何事情不同于它的默认值。我在这里缺少什么?

最后,我想设置文档挂钩以使用gsub()将文档中的短代码替换为其他代码。但是这个换行和代码围栏的问题让我感到困惑。

我很感激有关如何在更改文档挂钩时保留这些换行符和代码围栏的任何建议!

1 个答案:

答案 0 :(得分:2)

您应该在Rmd文件中设置里面的钩子函数。如果您在knit()之前执行此操作,则必须先调用render_markdown()