r语言 - Knitr:spin - 如何在不手动添加 #' 每行的情况下添加文本?



我的理解是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

最新更新