SynopsisDzianina pdf ze skryptu RMD klikając plik wykonywalny r
wuold Chciałbym stworzyć plik PDF z poziomu skryptu RMD prostu klikając na ikonę pliku/tak, że moi współpracownicy nie wyczerpują się otwierając najpierw RStudio.
Pytanie
Kiedy zobaczyłem this na prace badawczo-blogerów i dostał to działa, myślałem, że zbliża się do idealnego przepływu pracy ze skryptów do dzielenia się moją pracę, pozwalając moich współpracowników wykonać plik i dostać w rezultacie plik pdf ze zaktualizowanymi liczbami. Jednak nie mogę go uruchomić z niektórymi funkcjami w bibliotece knitr.
Najlepszy scenariusz jest to, że to pytanie jest ciekawe, tylko niewielu z was tam, ale tu idzie:
Poniżej można zobaczyć skrypt w pliku o nazwie RexecKnit.Rmd. Jedyny powód, dla którego tam jest, więc możesz przetestować całą procedurę dla siebie, jeśli chcesz. Nawiasem mówiąc, używam RStudio w wersji 0.99.467 na Windows 7, 64-bit.
---
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)
```
wiem, że to dość długi skrypt dla celów testowych, ale to, aby upewnić się, że wszystko działa, kiedy wykonać skrypt po podwójnym kliknięciu tego trochę urody który jest plikiem o nazwie rozmówca knitr.Rexe (podobnie jak w post-R blogerów) zawierający ten kawałek kodu:
library(knitr)
library(rmarkdown)
setwd('C:/repos/r_tutorials/executable R files')
knit('RexecKnit.Rmd')
Sys.sleep(3)
I to działa zgodnie z oczekiwaniami. Po podwójnym kliknięciu pliku skrypt jest uruchamiany bez otwierania R lub Rstudio, a plik .md jest tworzony w wybranym folderze. Ten sam skrypt działa, gdy jest przechowywany jako plik .Rexe i jako plik .R. Ale tutaj jest problem:
Chcę produkować PDF i zgodnie z końcówką here, zastępując
knit('RexecKnit.Rmd')
z
rmarkdown::render("RexecKnit.Rmd")
powinno załatwić sprawę tak długo, jak w nagłówku YAML obejmuje to:
output: pdf_document
I ma rk (co oznacza, że plik pdf jest tworzony z każdym szczegółem określonym w dłuższym skrypcie), przynajmniej gdy jest uruchamiany jako plik .R. ku mojemu rozczarowaniu, to nie działa, gdy jest on uruchamiany z .Rexec pliku tak:
library(knitr)
library(rmarkdown)
setwd('C:/repos/r_tutorials/executable R files')
rmarkdown::render("RexecKnit.Rmd")
Sys.sleep(3)
Dziękuję, że spojrzeć na to!
Twoja sugestia działa tak samo, jak robi to rmarkdown :: render ("RexecKnit.Rmd"). Działa jako plik .R, ale nie jako plik .Rexec. – vestland
Edytowałem odpowiedź. –
Nie jestem pewien, do czego służy plik "C: \ ścieżka_do_twoja_pliku \ twój_pliku.Rout", ale teraz go odpalam. – vestland