Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式导入和操作R脚本/Convert.R to.Rmd_R_R Markdown - Fatal编程技术网

以编程方式导入和操作R脚本/Convert.R to.Rmd

以编程方式导入和操作R脚本/Convert.R to.Rmd,r,r-markdown,R,R Markdown,我有一个R脚本,我想从一个不同的R脚本中导入,操作它的内容(搜索和替换),并用不同的扩展名(.rmd)保存 下面是示例.R文件在操作之前的外观: # A title # chunkstart plot(1,1) # chunkend 这就是示例.Rmd处理操作后的处理方式:将“#chunkstart”和“#chunkend”分别替换为“`{r}和``” # A title ```{r} plot(1,1) ``` 我一直在寻找这样做的方法,但到目前为止还没有找到。有什么想法吗 我确信您可以使

我有一个
R
脚本,我想从一个不同的R脚本中导入,操作它的内容(搜索和替换),并用不同的扩展名(
.rmd
)保存

下面是示例.R文件在操作之前的外观:

# A title
# chunkstart
plot(1,1)
# chunkend
这就是示例.Rmd处理操作后的处理方式:将“
#chunkstart
”和“
#chunkend
”分别替换为“`{r}和``”

# A title
```{r}
plot(1,1)
```

我一直在寻找这样做的方法,但到目前为止还没有找到。有什么想法吗

我确信您可以使用regex以更少的代码行来完成。 然而,它应该能解决你的问题

library(magrittr)

readLines('example.R') %>% 
  stringr::str_replace("# chunkstart", "```{r}") %>% 
  stringr::str_replace("# chunkend", "```") %>% 
  writeLines("example.Rmd")
使用以下代码行,您将能够在
/path\u到某个目录中的每个
.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"))
})

希望有帮助

我确信您可以使用regex以更少的代码行来完成。 然而,它应该能解决你的问题

library(magrittr)

readLines('example.R') %>% 
  stringr::str_replace("# chunkstart", "```{r}") %>% 
  stringr::str_replace("# chunkend", "```") %>% 
  writeLines("example.Rmd")
使用以下代码行,您将能够在
/path\u到某个目录中的每个
.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::自旋< /代码>是对这个问题的一个相关答案(特别是征求意见),或者至少是一个有用的备选方案。 您必须稍微重新格式化输入,但其好处是,它是一种内置的、更丰富的、多功能的处理块选项和格式的方法

下面是带注释的R脚本的样子(使用spin的默认正则表达式)

输出Rmd读取

## A title
first chunk

```{r fig.width=10}
plot(1,1)
# some text
```

another chunk

```{r }
plot(2,2)
```

<我想<代码> KNITR::SPIN <代码>是对这个问题的一个相关答案(特别是征求意见),或者至少是一个有用的选择来考虑。 您必须稍微重新格式化输入,但其好处是,它是一种内置的、更丰富的、多功能的处理块选项和格式的方法

下面是带注释的R脚本的样子(使用spin的默认正则表达式)

输出Rmd读取

## A title
first chunk

```{r fig.width=10}
plot(1,1)
# some text
```

another chunk

```{r }
plot(2,2)
```

如果你认为某些答案被错误地删除了,请把它提出来。这背后可能有一些原因,尽管它们并不总是被说出来。除此之外,你能给出你的答案来删除对如此温和的贬义言论吗?我们的目标是更正式的技术风格,而这样的评论并不完全符合这一点。(你可以在聊天中,有时也可以在评论中,但不是在普通的问答中)我担心匿名回答者不会获得良好的体验——我们不能评论,而且答案可能会很快被下意识的假设所遗忘(如果我以高代表性用户的身份发布,我打赌它不会被删除). 从事Meta可能会重新引发典型的利基标签辩论(删除简明答案的主持人通常不知道主题)。这一最低限度的批评意见是指出“技术风格”没有被考虑两次,我认为读者(和OP)有必要要意识到这样的失败。不过,我认为批评不属于答案。顺便说一句,你的答案并不是那么简洁。(我不同意所有简明的答案都是不好的。)然而,我确实觉得最好让关于Meta的争论重新点燃,直到得出一个实际的结论。另一个需要花费一段时间的案例是罐头评论——它们一开始非常不受欢迎,直到人们最终理解为什么有必要这样做。(适度是这里的主要用例,高质量的罐装评论通常比简短、低质量、仓促的评论要好。)如果你认为某些答案被错误地删除了,请打开它。这背后可能有一些原因,尽管它们并不总是被说出来。除此之外,你能给出你的答案来删除对如此温和的贬义言论吗?我们的目标是更正式的技术风格,而这样的评论并不完全符合这一点。(你可以在聊天中,有时也可以在评论中,但不是在普通的问答中)我担心匿名回答者不会获得良好的体验——我们不能评论,而且答案可能会很快被下意识的假设所遗忘(如果我以高代表性用户的身份发布,我打赌它不会被删除). 从事Meta可能会重新引发典型的利基标签辩论(删除简明答案的主持人通常不知道主题)。这一最低限度的批评意见是指出“技术风格”没有被考虑两次,我认为读者(和OP)有必要要意识到这样的失败。不过,我认为批评不属于答案。顺便说一句,你的答案并不是那么简洁。(我不同意所有简明的答案都是不好的。)然而,我确实觉得最好让关于Meta的争论重新点燃,直到得出一个实际的结论。另一个需要花费一段时间的案例是罐头评论——它们一开始非常不受欢迎,直到人们最终理解为什么有必要这样做。(适度是这里的主要用例,高质量的固定评论通常比简短、低质量、匆忙的评论要好。)