同时运行R标记(check.Rmd)和R knitr(test.Rnw)文件

同时运行R标记(check.Rmd)和R knitr(test.Rnw)文件,r,markdown,knitr,r-markdown,R,Markdown,Knitr,R Markdown,我有以下问题;有两个大文档,一个写在R Markdown(check.Rmd)中,另一个写在R knitr(test.Rnw)中。在第一个文档中,我们有如下代码: \section{Organisations Test} \textbf{Running Organisations Checks} <<CreateOrganisations, echo=FALSE, progress=TRUE, warning=FALSE, eval=TRUE>>= source("O

我有以下问题;有两个大文档,一个写在
R Markdown
(check.Rmd)中,另一个写在
R knitr
(test.Rnw)中。在第一个文档中,我们有如下代码:

\section{Organisations Test}

\textbf{Running Organisations Checks}

<<CreateOrganisations, echo=FALSE, progress=TRUE, warning=FALSE, eval=TRUE>>=
source("OrganisationsTest.R")
OrganisationsTest(current_schema,server,user,pass)

@
\section{Test}
\textbf{运行组织检查}
=
来源(“组织标准”)
OrganizationStest(当前_架构、服务器、用户、通行证)
@
另一种情况如下:

  2. check the downwards shock
```{r chunk_Int_Sh_p2,  echo=FALSE}
unique(param.int.shock.tab[SHOCKTYPE=="SHOCK_DOWN"&PERIODEND<21|PERIODEND==90, list( Maturity=PERIODEND, Shock_value=100*SHOCKVALUE)])
``` 
2。检查向下冲击
```{r chunk_Int_Sh_p2,echo=FALSE}
独特(param.int.shock.tab[SHOCKTYPE==“shock_DOWN”&periondendRStudio按钮“Compile PDF”(用于RNW文档)和“Knit PDF”(用于RMD文档)非常方便,但在类似这种情况下,了解它们的功能非常重要,以便重现相同或类似的行为

总结问题,它需要一种将两个文件(RMD和RNW文档)转换为PDF的方法,最好使用上面提到的两个按钮

不幸的是,(据我所知)不可能在RStudio GUI中添加任何用户定义的按钮。但是编写一个R脚本来编译这两个文档是很简单的

在下文中,我假设有两个文件:

  • first.Rmd

    This is a RMD file.
    
    ```{r, echo=FALSE}
    plot(1)
    ```
    
  • second.Rnw

    \documentclass{article}
    \begin{document}
    
    This is a RNW file.
    
    <<>>=
    plot(1)
    @
    \end{document}
    
    knit
    调用从
    first.Rmd
    生成
    first.md
    ,在块中执行R代码。
    render
    将生成的标记文件转换为PDF。[注意底部的附录!]

    要将
    first.Rnw
    编译为PDF,我们只需使用
    knit2pdf

    knit2pdf("second.Rnw")
    
    将这两个代码段复制到一个R脚本中并单击“源代码”尽可能接近“一键解决方案”

    但是,请注意,代码片段的功能与“Compile/knit PDF”按钮非常相似,但并不完全相同。“Compile”按钮启动新的R会话,而上述解决方案使用当前会话

    • 在执行代码段之前,请确保使用正确的工作目录
    • 默认情况下,
      knit
      knit2pdf
      都使用
      envir=parent.frame()
      。这意味着在调用环境中执行分块的R代码(请参阅)。这可能是一个有用的功能,例如“传递”变量转换为块,但了解它很重要。否则,文档可能在一个会话(调用环境中存在某些变量)中编译良好,但无法在另一个会话中编译(缺少这些变量)。因此,此功能在再现性方面有点危险。作为解决方案,可以使用
      envir=new.env(parent=As.environment(2))
      ;有关该主题的更多详细信息,请参阅

    我刚刚意识到以下关于
    渲染

    如果输入需要编织,则在
    pandoc
    之前调用
    knit

    (来源:
    ?渲染


    因此,
    knit(input=“first.Rmd”);render(input=“first.md”,output\u format=“pdf\u document”)
    可以简化为
    render(input=“first.Rmd”,output\u format=“pdf\u document”)
    。上面的
    envir
    问题
    knit
    也适用于
    render

    尝试使用类似
    \input{check.Rmd}的latex
    input
    命令
    在test.Rnw中。你知道函数
    knit
    knit2pdf
    吗?我在理解你在做什么时有些困难,但听起来你只需要一个调用这些函数(或类似函数)的R脚本函数。原则上,它如下:如果您要编译knitr文件,我们有2个文件,您将在RStudio中使用
    compilePDF
    bottom,对于标记文件,您可以在RStudio中使用
    KnitPDF
    bottom,但我们希望将这两个文件放在一起,并在底部单击。这是怎么可能的?上面的键入:“…要将
    first.Rnw
    编译成PDF,我们可以简单地使用…”应该是“…要将
    second.Rnw
    编译成PDF,我们可以简单地使用…”。顺便感谢您的回答。
    knit2pdf("second.Rnw")