如何通过单击可执行 r 文件从 rmd 脚本编织 pdf?
How to knit pdf from rmd script by clicking an executable r file?
剧情简介
我想通过单击文件/图标从 rmd 脚本生成 pdf 文件,这样我的同事就不会因为先打开 RStudio 而筋疲力尽。
问题
当我在 R-bloggers 上看到 this 并让它运行时,我认为我正在接近完美的工作流程,从编写脚本到通过让我的同事执行一个文件并获得一个共享我的工作pdf 结果更新了数字。但是,我无法让它与 knitr 库中的某些函数一起使用。
最好的情况是只有少数人对这个问题感兴趣,但这里是:
您可以在下面看到名为 RexecKnit.Rmd 的文件中的脚本。
它存在的唯一原因是如果您愿意,您可以自己测试整个过程。顺便说一下,我 运行 在 Windows 7、64 位上安装 RStudio 版本 0.99.467。
---
title: "Executable R, rmd and pdf"
header-includes: \usepackage{caption} \usepackage{fancyhdr}
output: pdf_document
fig_caption: no
---
\addtolength{\headheight}{0.5cm}
\pagestyle{fancyplain}
\renewcommand{\headrulewidth}{0pt}
```{r Settings, echo = FALSE, eval = TRUE, results = "hide", warning = FALSE, message = FALSE}
rm(list=ls())
pck_loaded <- (.packages())
# Packages to load
pck_toload <- c('ggplot2', 'xts', 'quantmod', 'zoo', 'PerformanceAnalytics',
'tseries', 'mvtnorm', 'data.table', 'XLConnect', 'sqldf', 'stargazer', 'xtable', 'gridExtra', 'grid', 'TTR')
# Load packages
for(i in 1:length(pck_toload)) {
if (!pck_toload[i] %in% pck_loaded)
print(pck_toload[i])
library(pck_toload[i], character.only = TRUE)
}
```
\captionsetup[table]{labelformat=empty}
```{r repex1, echo = FALSE, eval = TRUE, results = "asis", warning = FALSE, message = FALSE, fig.width = 12, fig.height = 8}
# Data table with formatted numbers and text
v1 <- c("\colorbox{white}{0.05}" , "\colorbox{yellow}{0.57}", "\colorbox{red}{-0.99}")
v2 <- c("An unexpected comment", "A qurious question", "And an insightful answer")
dt1 <- data.table(v1,v2)
# Data table using xtable
print(xtable(dt1,
caption = 'Fancy table'),
caption.placement = 'top',
comment = FALSE,
sanitize.text.function = function(x) x)
```
```{r repex2, echo = FALSE, eval = TRUE, results = "asis", warning = FALSE, message = FALSE, fig.width = 12, fig.height = 8}
# Data table wiht random numbers
dt2 <- data.table(replicate(2,sample(0:100,10,rep=TRUE)))
# ggplot of random numbers
plx <- ggplot(data=dt2 ,aes(x=V1, y = V2))
plx <- plx + geom_line(color = 'blue', fill = 'grey')
plx <- plx + theme_classic()
plx <- plx + labs(title="Random numbers", x="x-axis",y="y-axis")
plot(plx)
```
我知道这是一个用于测试目的的相当冗长的脚本,但这只是为了确保当我双击这个小美女 执行脚本时一切正常,这是一个名为 [=45= 的文件]caller knitr.Rexe(就像在 R-Bloggers post 中一样)包含这段代码:
library(knitr)
library(rmarkdown)
setwd('C:/repos/r_tutorials/executable R files')
knit('RexecKnit.Rmd')
Sys.sleep(3)
这按预期工作。双击文件后,脚本为 运行,无需打开 R 或 Rstudio,并在所需文件夹中生成一个 .md 文件。同样的脚本在存储为 .Rexe 文件和 .R 文件时也能正常工作。
但问题是:
我想制作一个pdf,根据提示here,替换
knit('RexecKnit.Rmd')
和
rmarkdown::render("RexecKnit.Rmd")
只要 YAML header 包含以下内容,就可以解决问题:
output: pdf_document
它确实有效(这意味着 pdf 是用冗长脚本中指定的每个细节创建的),至少当它是 运行 作为 .R 文件时。
令我失望的是,当它来自像这样的 .Rexec 文件的 运行 时它不起作用:
library(knitr)
library(rmarkdown)
setwd('C:/repos/r_tutorials/executable R files')
rmarkdown::render("RexecKnit.Rmd")
Sys.sleep(3)
感谢您的关注!
假设一个人已经在 Windows
机器上独立安装了 pandoc
(这就是本例中问题的根源),她可以按照以下方式进行:
首先:制作一个.R
文件,内容如下
library(knitr)
library(rmarkdown)
setwd('C:/repos/r_tutorials/executable R files')
knit("RexecKnit.Rmd")
# render the generated markdown file.
render("RexecKnit.md")
Sys.sleep(3)
第二个:制作一个.bat
文件
创建一个 .bat 文件,比如 "my_bat_file.bat",并包含以下文本。但是,必须调整路径:
"C:\R\R-3.2.2\bin\x64\R.exe" CMD BATCH --vanilla --slave "C:\path_to_your_file\your_file.R" "C:\path_to_your_file\your_file.Rout"
第三:指导Windows Task Scheduler
如果数据更新频繁,可以在Windows中调度Task Scheduler,每周在晚上的某个时间重复执行一次.bat
文件,这样早上就有报告了.
剧情简介
我想通过单击文件/图标从 rmd 脚本生成 pdf 文件,这样我的同事就不会因为先打开 RStudio 而筋疲力尽。
问题
当我在 R-bloggers 上看到 this 并让它运行时,我认为我正在接近完美的工作流程,从编写脚本到通过让我的同事执行一个文件并获得一个共享我的工作pdf 结果更新了数字。但是,我无法让它与 knitr 库中的某些函数一起使用。
最好的情况是只有少数人对这个问题感兴趣,但这里是:
您可以在下面看到名为 RexecKnit.Rmd 的文件中的脚本。 它存在的唯一原因是如果您愿意,您可以自己测试整个过程。顺便说一下,我 运行 在 Windows 7、64 位上安装 RStudio 版本 0.99.467。
---
title: "Executable R, rmd and pdf"
header-includes: \usepackage{caption} \usepackage{fancyhdr}
output: pdf_document
fig_caption: no
---
\addtolength{\headheight}{0.5cm}
\pagestyle{fancyplain}
\renewcommand{\headrulewidth}{0pt}
```{r Settings, echo = FALSE, eval = TRUE, results = "hide", warning = FALSE, message = FALSE}
rm(list=ls())
pck_loaded <- (.packages())
# Packages to load
pck_toload <- c('ggplot2', 'xts', 'quantmod', 'zoo', 'PerformanceAnalytics',
'tseries', 'mvtnorm', 'data.table', 'XLConnect', 'sqldf', 'stargazer', 'xtable', 'gridExtra', 'grid', 'TTR')
# Load packages
for(i in 1:length(pck_toload)) {
if (!pck_toload[i] %in% pck_loaded)
print(pck_toload[i])
library(pck_toload[i], character.only = TRUE)
}
```
\captionsetup[table]{labelformat=empty}
```{r repex1, echo = FALSE, eval = TRUE, results = "asis", warning = FALSE, message = FALSE, fig.width = 12, fig.height = 8}
# Data table with formatted numbers and text
v1 <- c("\colorbox{white}{0.05}" , "\colorbox{yellow}{0.57}", "\colorbox{red}{-0.99}")
v2 <- c("An unexpected comment", "A qurious question", "And an insightful answer")
dt1 <- data.table(v1,v2)
# Data table using xtable
print(xtable(dt1,
caption = 'Fancy table'),
caption.placement = 'top',
comment = FALSE,
sanitize.text.function = function(x) x)
```
```{r repex2, echo = FALSE, eval = TRUE, results = "asis", warning = FALSE, message = FALSE, fig.width = 12, fig.height = 8}
# Data table wiht random numbers
dt2 <- data.table(replicate(2,sample(0:100,10,rep=TRUE)))
# ggplot of random numbers
plx <- ggplot(data=dt2 ,aes(x=V1, y = V2))
plx <- plx + geom_line(color = 'blue', fill = 'grey')
plx <- plx + theme_classic()
plx <- plx + labs(title="Random numbers", x="x-axis",y="y-axis")
plot(plx)
```
我知道这是一个用于测试目的的相当冗长的脚本,但这只是为了确保当我双击这个小美女
library(knitr)
library(rmarkdown)
setwd('C:/repos/r_tutorials/executable R files')
knit('RexecKnit.Rmd')
Sys.sleep(3)
这按预期工作。双击文件后,脚本为 运行,无需打开 R 或 Rstudio,并在所需文件夹中生成一个 .md 文件。同样的脚本在存储为 .Rexe 文件和 .R 文件时也能正常工作。 但问题是:
我想制作一个pdf,根据提示here,替换
knit('RexecKnit.Rmd')
和
rmarkdown::render("RexecKnit.Rmd")
只要 YAML header 包含以下内容,就可以解决问题:
output: pdf_document
它确实有效(这意味着 pdf 是用冗长脚本中指定的每个细节创建的),至少当它是 运行 作为 .R 文件时。 令我失望的是,当它来自像这样的 .Rexec 文件的 运行 时它不起作用:
library(knitr)
library(rmarkdown)
setwd('C:/repos/r_tutorials/executable R files')
rmarkdown::render("RexecKnit.Rmd")
Sys.sleep(3)
感谢您的关注!
假设一个人已经在 Windows
机器上独立安装了 pandoc
(这就是本例中问题的根源),她可以按照以下方式进行:
首先:制作一个.R
文件,内容如下
library(knitr)
library(rmarkdown)
setwd('C:/repos/r_tutorials/executable R files')
knit("RexecKnit.Rmd")
# render the generated markdown file.
render("RexecKnit.md")
Sys.sleep(3)
第二个:制作一个.bat
文件
创建一个 .bat 文件,比如 "my_bat_file.bat",并包含以下文本。但是,必须调整路径:
"C:\R\R-3.2.2\bin\x64\R.exe" CMD BATCH --vanilla --slave "C:\path_to_your_file\your_file.R" "C:\path_to_your_file\your_file.Rout"
第三:指导Windows Task Scheduler
如果数据更新频繁,可以在Windows中调度Task Scheduler,每周在晚上的某个时间重复执行一次.bat
文件,这样早上就有报告了.