2015-10-02 7 views
7

सारKnit पीडीएफ

मैं सिर्फ इतना है कि अपने सहकर्मियों के लिए खुद को थका नहीं है एक फ़ाइल/एक आइकन पर क्लिक करके एक RMD स्क्रिप्ट से एक pdf फ़ाइल का उत्पादन करना चाहते wuold पहले RStudio खोलकर।

सवाल

जब मैं आर ब्लॉगर्स पर this देखा था, और यह काम कर रहा, मैंने सोचा कि मैं अपने सहकर्मियों की अनुमति देकर अपने काम को साझा करने के लिए स्क्रिप्टिंग से सही कार्य प्रवाह आ रहा था मिल गया एक फ़ाइल निष्पादित और मिल एक परिणाम के रूप में अद्यतन संख्या के साथ एक पीडीएफ। हालांकि, मैं इसे knitr पुस्तकालय में कुछ कार्यों के साथ काम करने के लिए नहीं मिल सकता है।

नीचे आप नामक एक फ़ाइल में एक स्क्रिप्ट देख सकते हैं RexecKnit.Rmd:

बेस्ट स्थिति है कि इस सवाल का वहाँ केवल एक तुम में से कुछ के लिए दिलचस्प है चला जाता है, लेकिन यहाँ। इसका एकमात्र कारण यह है कि यदि आप चाहें तो आप पूरी प्रक्रिया का परीक्षण कर सकते हैं। वैसे, मैं विंडोज 7, 64 बिट पर RStudio संस्करण 0.9 9.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) 
``` 

मुझे पता है कि परीक्षण के लिए एक बहुत लंबा स्क्रिप्ट है, लेकिन यह सिर्फ लगता है कि सब कुछ काम करता है जब मैं डबल क्लिक पर स्क्रिप्ट को निष्पादित करने का तरीका बताया इस छोटे सुंदरता .Rexe, जिसके कारण फ़ाइल फोन करने वाले knitr.Rexe कहा जाता है (आर-ब्लॉगर्स पोस्ट की तरह) जिसमें कोड का यह छोटा टुकड़ा शामिल है:

library(knitr) 
library(rmarkdown) 
setwd('C:/repos/r_tutorials/executable R files') 
knit('RexecKnit.Rmd') 
Sys.sleep(3) 

और यह अपेक्षा के अनुसार काम करता है। फ़ाइल को डबल क्लिक्स करने पर, स्क्रिप्ट R या Rstudio खोलने के बिना चलाया जाता है, और एक .md फ़ाइल वांछित फ़ोल्डर में बनाई जाती है। और एक ही स्क्रिप्ट काम करता है जब इसे एक .exe फ़ाइल के रूप में संग्रहीत किया जाता है और एक। फ़ाइल के रूप में। ,

मैं एक पीडीएफ निर्माण करने के लिए चाहते हैं, और एक टिप here के अनुसार

rmarkdown::render("RexecKnit.Rmd") 

साथ

knit('RexecKnit.Rmd') 

जगह YAML हेडर के रूप में रूप में लंबे समय चाल करना चाहिए: लेकिन यहाँ समस्या है इसमें शामिल हैं:

output: pdf_document 

और यह वही करता है आरके (जिसका अर्थ है कि पीडीएफ लेंस स्क्रिप्ट में निर्दिष्ट प्रत्येक विवरण के साथ बनाया गया है), कम से कम जब इसे आरआर फ़ाइल के रूप में चलाया जाता है। मेरी निराशा करने के लिए, यह काम नहीं करता है जब वह इस तरह का .Rexec फ़ाइल से चलाया जाता है:

library(knitr) 
library(rmarkdown) 
setwd('C:/repos/r_tutorials/executable R files') 
rmarkdown::render("RexecKnit.Rmd") 
Sys.sleep(3) 

धन्यवाद इस पर एक नज़र रखने के लिए!

उत्तर

2

मान लिया जाये कि एक स्वतंत्र रूप से 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 में कार्य शेड्यूलर shedule बार-बार .bat फ़ाइल निष्पादित करने के लिए कर सकते हैं रात में कुछ समय पर, सुबह सुबह रिपोर्ट होती है।

+0

आपका शक्कर उसी तरह काम करता है जैसे rmarkdown :: rendnder ("RexecKnit.Rmd") करता है। यह एक आर फ़ाइल के रूप में काम करता है, लेकिन एक .exec फ़ाइल के रूप में नहीं। – vestland

+0

मैंने जवाब संपादित किया। –

+0

मुझे यकीन नहीं है कि "सी: \ path_to_your_file \ your_file.Rout" क्या है, लेकिन मैं इसे अभी जा रहा हूं। – vestland