我有一个R
脚本,我想从不同的R脚本中导入,操作它的内容(搜索和替换(并使用不同的扩展名(.rmd
(保存。
这就是示例的方式。R 文件在操作之前会看起来:
# A title
# chunkstart
plot(1,1)
# chunkend
这就是例子。rmd它将负责操作:将 "# chunkstart
" 和 "# chunkend
" 分别替换为 ''{r} 和 '''。
# A title
```{r}
plot(1,1)
```
我一直在寻找方法来做到这一点,但到目前为止还没有找到。有什么想法吗?
我相信您可以使用代码行更少的正则表达式来做到这一点。 但是,它应该可以解决您的问题。
library(magrittr)
readLines('example.R') %>%
stringr::str_replace("# chunkstart", "```{r}") %>%
stringr::str_replace("# chunkend", "```") %>%
writeLines("example.Rmd")
使用以下代码行,您将能够在/path_to_some_directory
中的每个.R
文件中应用此"操作"
lapply(list.files('/path_to_some_directory', pattern = ".R$",
full.names = TRUE), function(data) {
readLines(data) %>%
stringr::str_replace("# chunkstart", "```{r}") %>%
stringr::str_replace("# chunkend", "```") %>%
writeLines(paste0(data, "md"))
})
希望对您有所帮助!
我认为?knitr::spin
是这个问题的相关答案(特别是提出想法(,或者至少是一个有用的选择。 您必须稍微重新格式化输入,但好处是一种内置的、更丰富、更通用的方式来处理块选项和格式。
下面是带注释的 R 脚本的外观(使用 spin 的默认正则表达式(,
#' ## A title
#' first chunk
#- fig.width=10
plot(1,1)
# some text
#' another chunk
plot(2,2)
输出 Rmd 读取,
## A title
first chunk
```{r fig.width=10}
plot(1,1)
# some text
```
another chunk
```{r }
plot(2,2)
```