2017-01-08 42 views
3

我的理解是,knitr:spin允许我在我的普通,普通话,普通ol'良好R脚本上工作,同时保留生成理解降级语法的完整文档的能力。 (见https://yihui.name/knitr/demo/stitch/Knitr:旋转 - 如何添加文本而无需手动添加#'每一行?

事实上,功能在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/),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每隔一行都加上这个#'?也许就像评论一大堆代码行一样?

我错过了什么吗?

谢谢!

+1

在选定的代码块中用散列和撇号替换每个散列怎么样? – kaksat

+0

感谢兄弟,但我只想写我的文字,而不手动添加任何东西。这完全破坏了帮助编写科学文档的目的... –

+1

您是在谈论代码块内的评论文本还是代码块外的常规文本?你能发布你的完整Rmarkdown文档的样本吗? – eipi10

回答

3

在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) 
} 

我会注意,这个函数检查已有的#',你想建立一个在我修改,以便它不应该取代他们太多由添加空间正则表达式。

+1

我还会注意到,如果你**开始**使用Rmd,整个事情更容易,你可以使用Ctrl + Alt + P来运行所有以前的块,运行所有的块,以获得类似的行为作为'rmarkdown :: render'。 – rmflight

+0

谢谢!一个问题,我仍然有以下几点:说我的第一部分代码加载了我需要的所有数据,之后我可以评论这些代码,这样当我“渲染”我的文档时,Rstudio仅使用内存中的对象? –

+1

nt代码,或使用'eval = FALSE',所以它不会在下一次渲染时重新运行。 – rmflight

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脚本与降价之间洒了。


编辑:对于那些谁是downvoting,请阅读下面这个评论... OP没有说明他用spin更早。

+1

耶谢谢,但这是问题所在。 Rmarkdown不允许在内存中使用对象,所以我必须一次运行整个事情。我不想要Rmarkdown,我想用knitr。 –

+1

@Noobie哦,这更有意义。试试https://yihui.name/knitr/demo/stitch/ –

+1

是的,谢谢,我在这里谈论'旋转'。你是对的https://yihui.name/knitr/demo/stitch/ –

相关问题