如何将RStudio中的.Rmd文件转换为.Rnw文件?

23

我非常喜欢在Rstudio中使用knitr,并通过它来编写Markdown演示文稿和数据分析。现在我想在论文中使用相同的代码和结果,并且想将Rmd文件中的代码块 ```{r} 转换为Rnw文件中的代码块 << >>= @

这样可以使用相同的文档和代码,既用于演示文稿,也用于主要的论文。

是否有一种方法可以在Markdown和Rnw文件之间进行代码块的转换?除了代码块语法的区别外,它们在标记上非常相似(例如,将文本转换为Latex很容易,例如使用Pandoc)。

1个回答

10

你可以将R代码外部化以便在不同文档之间共享,而不是转换整个文档; 请参见http://yihui.name/knitr/demo/externalization/

一旦你使用了read_chunk('Rcode.r'),你就可以在你的Rmd中使用```{r label},在你的Rnw文档中使用<<label>>=,其中label来自R脚本中的## @knitr label行。


将代码与主文件分开的想法是很好的。以防万一我需要快速将Rmd文件转换为Rnw文件或反之,这是可能的吗? - Anusha
1
听起来很棒,但对我来说没有太多意义:https://github.com/yihui/knitr/issues/322 将 ```{r} 转换为 <<>>= 很容易,但其他文本呢?你必须考虑将 markdown 转换为 LaTeX(反之亦然),而 pandoc 已经做得无可挑剔了。 - Yihui Xie
似乎你正在使用knitExtra进行工作。我已经使用问题中提到的pandoc将文档从markdown转换为latex。使用正则表达式转换代码块或替换字符串的任务似乎很繁琐且容易出错。请问是否有更简便的方式来转换块标记? - Anusha
4
我实际上没有计划在knitrExtra上工作。使用正则表达式转换代码块是唯一的方法,而且应该不会太难。我的意思是相比于转换其他文本来说,这是一个更小的挑战,因此我建议您将Rmd编译为md,并从md格式开始转换到其他格式,而不是转换源文件。另一种方法是使用spin():您可以编写一个单独的R脚本,并将其转换为Rnw或Rmd或其他格式;请参见此页面的第二部分:http://yihui.name/knitr/demo/stitch/。但是这并不能解决转换其他文本的问题。 - Yihui Xie
有没有简单的方法来处理引用?到目前为止,我在.Rmd中使用@Xie和在.Rnw中使用\citep{Xie} - Matt Bannert
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接