Knitr:spin - 如何添加文本而无需手动添加#'每一行?

时间:2017-01-08 21:21:22

标签: r rstudio knitr r-markdown

我的理解是@Path("/customers") public class CustomerService { private Service service; @GET @Produces(MediaType.APPLICATION_JSON) public List<Customer> getAllCustomersService() { return (ArrayList<Customer>) service.getAllCustomers(); } ... 允许我使用普通的,普通的,常规的'好R脚本',同时保持生成理解markdown语法的完整文档的能力。 (见https://yihui.name/knitr/demo/stitch/

事实上,knitr:spin中的rmarkdown功能,虽然超级整洁,实际上真的很麻烦,因为

  • 我需要复制我的代码并将其分解为超级无聊+低效的块,因为很难跟踪代码更改。
  • 除此之外Rstudio无法读取我当前的工作区。这有些令人惊讶,但它就是它。

总而言之,非常约束......请参阅此处进行相关讨论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/),rmarkdown似乎是解决方案。

确实,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每行添加#'个?也许与评论一大堆代码行的精神相同?

我错过了什么吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

在RStudio v 1.1.28中,当我在我的机器上的#'文件中输入时,使用#'开始一行会导致下一行以*.R开头(Ubuntu Linux 16.04) LTS)。

因此,只要您使用它启动文本块,它就会继续。但对于以前存在的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)
}

我会注意到,这个函数检查预先存在的#',你想要构建它。我修改了它,所以不应该用它来代替它们在正则表达式中添加空格。

答案 1 :(得分:0)

使用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,而不是(正如你所说)一个R标记,其间有降价。

编辑:对于那些正在投票的人,请阅读下面的评论...... OP没有说明他之前使用的是spin