Knitr:spin - 如何在不手动添加每一行的情况下添加文本?
Knitr:spin - how to add text without manually adding #' every line?
我的理解是,knitr:spin
允许我使用普通的、普通的、常规的好 R 脚本,同时保持生成理解 markdown 语法的完整文档的能力。 (参见 https://yihui.name/knitr/demo/stitch/)
确实,Rstudio
中的 rmarkdown
功能虽然超级简洁,但实际上很麻烦,因为
- 我需要复制我的代码并将其分解成块,这非常无聊且效率低下,因为很难跟踪代码更改。
- 最重要的是
rmarkdown
无法读取我当前的工作区。这有点令人惊讶,但事实就是如此。
总而言之,这 非常 限制...有关相关讨论,请参见此处 Is there a way to knitr markdown straight out of your workspace using RStudio?。
如此处所讨论 (http://deanattali.com/2015/03/24/knitrs-best-hidden-gem-spin/),spin
似乎是解决方案。
确实,knitr:spin
语法如下所示:
#' This is a special R script which can be used to generate a report. You can
#' write normal text in roxygen comments.
#'
#' First we set up some options (you do not have to do this):
#+ setup, include=FALSE
library(knitr)
在常规工作区!
BUT 请注意每行文本如何以 #'
.
开头
我的问题是在每行文本后添加 #'
也非常低效。有没有办法自动执行此操作?
假设我 select 一大块文本,rstudio 每行添加这个 #'
?也许本着与评论一大块代码行相同的精神?
我是不是漏掉了什么?
谢谢!
使用 RMarkdown 文档,你可以这样写:
As you can see I have some fancy code below, and text right here.
```{r setup}
# R code here
library(ggplot2)
```
And I have more text here...
This gist 快速介绍了 RMarkdown 和 knitr
的功能。我认为你并不完全理解 RMarkdown 到底是什么,它是一个中间夹杂着 R 的 markdown 文档,而不是(如你所说)中间夹杂着 markdown 的 R 脚本。
编辑:对于那些反对投票的人,请阅读下面的评论...OP 没有说明他之前使用的是 spin
。
在 RStudio v 1.1.28 中,当我在机器上的 *.R
文件中按回车键时,以 #'
开始的一行会导致下一行以 #'
开始(Ubuntu Linux 16.04LTS).
所以只要你用它开始一个文本块,它就会继续。但是对于以前存在的 R 脚本,看起来你必须使用 find -> replace
,或者编写一个函数来修改所需的文件,这在一个非常简单的测试中对我有用。
comment_replace <- function(in_file, out_file = in_file){
in_text <- scan(file = in_file, what = character(), sep = "\n")
out_text <- gsub("^# ", "#' ", in_text)
cat(out_text, sep = "\n", file = out_file)
}
我会注意到,这个函数 不会 检查先前存在的 #'
,你会想要构建它。我修改了它,所以它不应该通过在正则表达式中添加 space 来替换它们太多。
我的理解是,knitr:spin
允许我使用普通的、普通的、常规的好 R 脚本,同时保持生成理解 markdown 语法的完整文档的能力。 (参见 https://yihui.name/knitr/demo/stitch/)
确实,Rstudio
中的 rmarkdown
功能虽然超级简洁,但实际上很麻烦,因为
- 我需要复制我的代码并将其分解成块,这非常无聊且效率低下,因为很难跟踪代码更改。
- 最重要的是
rmarkdown
无法读取我当前的工作区。这有点令人惊讶,但事实就是如此。
总而言之,这 非常 限制...有关相关讨论,请参见此处 Is there a way to knitr markdown straight out of your workspace using RStudio?。
如此处所讨论 (http://deanattali.com/2015/03/24/knitrs-best-hidden-gem-spin/),spin
似乎是解决方案。
确实,knitr:spin
语法如下所示:
#' This is a special R script which can be used to generate a report. You can
#' write normal text in roxygen comments.
#'
#' First we set up some options (you do not have to do this):
#+ setup, include=FALSE
library(knitr)
在常规工作区!
BUT 请注意每行文本如何以 #'
.
我的问题是在每行文本后添加 #'
也非常低效。有没有办法自动执行此操作?
假设我 select 一大块文本,rstudio 每行添加这个 #'
?也许本着与评论一大块代码行相同的精神?
我是不是漏掉了什么?
谢谢!
使用 RMarkdown 文档,你可以这样写:
As you can see I have some fancy code below, and text right here.
```{r setup}
# R code here
library(ggplot2)
```
And I have more text here...
This gist 快速介绍了 RMarkdown 和 knitr
的功能。我认为你并不完全理解 RMarkdown 到底是什么,它是一个中间夹杂着 R 的 markdown 文档,而不是(如你所说)中间夹杂着 markdown 的 R 脚本。
编辑:对于那些反对投票的人,请阅读下面的评论...OP 没有说明他之前使用的是 spin
。
在 RStudio v 1.1.28 中,当我在机器上的 *.R
文件中按回车键时,以 #'
开始的一行会导致下一行以 #'
开始(Ubuntu Linux 16.04LTS).
所以只要你用它开始一个文本块,它就会继续。但是对于以前存在的 R 脚本,看起来你必须使用 find -> replace
,或者编写一个函数来修改所需的文件,这在一个非常简单的测试中对我有用。
comment_replace <- function(in_file, out_file = in_file){
in_text <- scan(file = in_file, what = character(), sep = "\n")
out_text <- gsub("^# ", "#' ", in_text)
cat(out_text, sep = "\n", file = out_file)
}
我会注意到,这个函数 不会 检查先前存在的 #'
,你会想要构建它。我修改了它,所以它不应该通过在正则表达式中添加 space 来替换它们太多。