我有一个R
脚本,我想从不同的R脚本中导入,操纵它的内容(搜索和替换)并使用不同的扩展名保存.rmd
)。
这是example.R文件在操作之前的样子:
# A title
# chunkstart
plot(1,1)
# chunkend
这就是 example.Rmd 在操作后的样子:替换了" # chunkstart
"和" # chunkend
"分别用````{r}和```。
# A title
```{r}
plot(1,1)
```
我一直在寻找方法来做到这一点,但到目前为止还没有找到。有任何想法吗?
答案 0 :(得分:4)
我确信您可以使用 正则表达式 以较少的代码行完成此操作。 但它应该可以解决你的问题。
library(magrittr)
readLines('example.R') %>%
stringr::str_replace("# chunkstart", "```{r}") %>%
stringr::str_replace("# chunkend", "```") %>%
writeLines("example.Rmd")
使用以下代码行,您可以在.R
/path_to_some_directory
文件中应用此“操作”
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"))
})
希望它有所帮助!
答案 1 :(得分:2)
我认为?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)
```