我的理解是knitr:spin
允许我使用我的普通、普通、常规的ol’good R脚本,同时保持生成理解markdown语法的完整文档的能力。(参见https://yihui.name/knitr/demo/stitch/)
事实上,Rstudio
中的rmarkdown
功能虽然非常简洁,但实际上是一个麻烦,因为
- 我需要复制我的代码并将其分成块,这非常无聊而且效率低下,因为很难跟踪代码的更改
- 除此之外,
rmarkdown
无法读取我当前的工作区。这在某种程度上令人惊讶,但事实就是如此
总而言之,这是非常约束。。。有关讨论,请参阅此处。有没有一种方法可以使用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)
在一个正常的工作空间!
但是请注意每行文本前面都有#'
。
我在这里的问题是,在每一行文本之后添加#'
也是非常低效的。有没有办法自动做到这一点?
假设我选择了一整段文本,rstudio每行都添加这个#'
?也许是出于评论一整段代码行的精神?
我是不是错过了什么?
谢谢!
在RStudio v 1.1.28中,当我在机器(Ubuntu Linux 16.04LTS)上的*.R
文件中点击回车键时,以#'
开头的一行会导致下一行以#'
开头。
所以,只要你用它开始一个文本块,它就会继续。但对于以前存在的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)
}
我要注意的是,这个函数不检查预先存在的#'
,而是检查它。我对它进行了修改,这样它就不应该通过在正则表达式中添加空格来过多地替换它们。
使用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...
这篇文章简要介绍了RMarkdown和knitr
的特点。我想你还不完全理解RMarkdown到底是什么,它是一个中间有R的markdown文档,而不是(正如你所说的)中间有markdown的R脚本。
编辑:对于那些投票失败的人,请阅读下面的评论。。。OP之前没有具体说明他使用的是spin
。