2014-07-05 10 views
17

का उपयोग कर बुनाई के साथ काम करना मेरे पास एक प्रोजेक्ट फ़ोल्डर है, जो मेरी कार्यशील निर्देशिका है। आइए इसे प्रोजेक्ट पर कॉल करें। प्रोजेक्ट फ़ोल्डर 4 उपनिर्देशिकाएं हैं: code, data, figures, और documentsउपनिर्देशिका

मैं code उपनिर्देशिका में अपनी .Rmd फ़ाइल डालना चाहता हूं। मैं आंकड़े figures उपनिर्देशिका में जाना चाहता हूं। मैं .html, .md, और .docx फ़ाइल (ओं) documents उपनिर्देशिका में जाने के लिए चाहता हूं। मैं data उपनिर्देशिका से अपने डेटा में पढ़ना चाहता हूं। क्या यह संगठनात्मक संरचना संभव है? मैं इसे काम करने के लिए प्रतीत नहीं कर सकता।

मैं इस निर्देशिका को project पर सेट करने के लिए शुरू करता हूं क्योंकि मुझे लगता है कि knitr .Rmd फ़ाइल के साथ फ़ोल्डर को देखता है और इसे निर्दिष्ट निर्देशिका के रूप में कार्यशील निर्देशिका के रूप में मानता है।

```{r setglobal, cache = FALSE, include = TRUE} 
library(knitr) 
opts_knit$set(root.dir = "..") 
``` 

फिर मैं कार्यशील निर्देशिका से संबंधित आकृति पथ को सेट करने का प्रयास करता हूं।

```{r setchunk, cache=FALSE, include=TRUE} 
opts_chunk$set(fig.path = "./figures/") 
getwd() 
``` 

कार्यशील निर्देशिका सही ढंग से project के रूप में रिपोर्ट किया गया है। डेटा data उपनिर्देशिका से सही ढंग से पढ़ा जाता है। सभी आउटपुट ठीक से प्रस्तुत किया जाता है और सभी कोड चलाता है।

```{r readdata} 
crctx <- readRDS("./data/crctx.rds") 
getwd() 
*run lots of analyses here* 
``` 

लेकिन आंकड़े project/figures के बजाय project/code/figures निर्देशिका में खत्म।

मैंने base.dir सेटिंग करने का भी प्रयास किया है, लेकिन ऐसा कुछ भी नहीं दिख रहा है। मैंने पैरामीटर

base.dir = "./figures" 

opts_knit$set सूची में जोड़ा गया। मैंने पूरे पथ को कड़ी-कोडिंग करने की भी कोशिश की। लेकिन ऐसा कुछ भी बदलने में सक्षम नहीं लगता है।

मैं आर 3.10 और आर स्टूडियो 0.98.9 53 का उपयोग कर रहा हूं। यह मैक 0 एसएक्स 10.9.4 है।

क्या मुझे कुछ याद आ रही है? और आउटपुट फ़ाइलों को अपनी निर्देशिका में रखने का कोई तरीका है?

कारण यह महत्वपूर्ण है कि मैं चाहता हूं कि हमारी कंपनी सभी एक ही निर्देशिका संरचना का उपयोग करे, और इससे हमें हमारी परियोजनाओं को बेहतर तरीके से व्यवस्थित करने की अनुमति मिल जाएगी।

किसी भी मदद के लिए अग्रिम धन्यवाद।

अद्यतन:

मुझे लगता है कि opts_chunk$set(fig.path = "./figures/") सही नहीं है। मैंने माना कि opts_knit$set(root.dir = normalizePath("../")) का उपयोग कर प्रोजेक्ट फ़ोल्डर में मूल निर्देशिका को सेट करने से knitr में वैश्विक परिवर्तन होगा, क्योंकि ऐसा ही करना है। और यह डेटा उपनिर्देशिका के लिए काम करता है, जिसे अब "./data" के साथ एक्सेस किया जा सकता है जो कोड को चलाने की अनुमति देता है। हालांकि, वैश्विक सेटिंग आकृति आउटपुट पर लागू नहीं होती है। इसलिए, सही विनिर्देश opts_chunk$set(fig.path = "../figures/") है - ./ के बजाय ../ का उपयोग करना। मुझे लगता है कि रिची कपास ने इसे ठीक किया, और मैंने इसे थोड़ी देर के लिए नहीं देखा।

मैंने project/documents से project/code/figure पर एक प्रतीकात्मक लिंक बनाने के लिए ओएसएक्स में टर्मिनल का भी उपयोग किया जो डिफ़ॉल्ट रूप से knitr द्वारा बनाई गई है। इसके साथ, knitr सही उप-उपनिर्देशिका को देखता है, लेकिन सब कुछ projects/documents में समाप्त होता है। यह वास्तव में अच्छी तरह से काम किया। मैं फ़ाइल.symlink का उपयोग कर प्रतीकात्मक लिंक ठीक से नहीं बना सकता। लेकिन यह टर्मिनल में ठीक काम करता है। जाओ पता लगाओ।

अपडेट 2:

मैं के रूप में अच्छी तरह से काम करने के लिए उत्पादन फ़ाइलों मिला है। आपको सीधे बुनाई कमांड का उपयोग करना होगा। पाठ नीचे है।

Knitr कोड उत्पादन/रिपोर्ट में कोड/विश्लेषण और उत्पादन में .Rmd के साथ एक markdown दस्तावेज़ बुनी रहे हैं: knit("./code/knitr_file.Rmd", "./documents/knitr_output.md”)

Pandoc कोड .docx को .md फ़ाइल को रूपांतरित करने - को उसी फ़ोल्डर का उपयोग करता है। एमडी (knitr दस्तावेज़ से) pandoc("./documents/knitr_output.md", format = "docx”)

उत्पादन शैलियों फाइल

pandoc('knitr_output.md', format='html') # HTML pandoc('knitr_output.md', format='latex') # LaTeX/PDF pandoc('knitr_output.md', format='docx') # MS Word pandoc('knitr_output.md', format='odt') # OpenDocument

+0

(अगर [ 'normalizePath'] http://stackoverflow.com/questions/19882198/trouble-finding-file-source-in-rmd-chunk-when-knitting-rmd-from-master- देखें आर-फाइल) आपके लिए काम करता है। –

+0

मैंने वाक्यविन्यास को देखा, और मुझे पता नहीं लगा कि क्या करना था। लेकिन मैं एक और नजर डाल सकता हूँ। –

उत्तर

8

इस प्रयास करें। यह मानता है कि आपके पास कार्यरत निर्देशिका project के अंदर सूचीबद्ध 4 फ़ोल्डर्स हैं। यह भी मानता है कि फ़ाइल myData.csvdata में है।

जब आप फ़ाइल को बुनाते हैं, तो साजिश figures में सहेजी जाएगी। अंत में, कोड फ़ाइलों को code में देखता है और उन्हें documents पर ले जाता है। ऐसा करने का शायद एक बेहतर तरीका है।

```{r setup} 
    library(knitr) 
    opts_knit$set(root.dir=normalizePath('../')) 
    opts_chunk$set(fig.path = "../figures/", dev='pdf') # corrected path and added dev 
``` 

```{r import} 
    dat <- read.csv("data/myData.csv") 
``` 

```{r plot} 
    # pdf(file="figures/test.pdf") # I do this in setup instead 
    plot(dat) 
    # dev.off() 
``` 

```{r move} 
    files <- list.files("code/") 
    index <- grep("html", files) 
    file.rename(file.path("code", files[index]), 
       file.path("documents", files[index])) 
``` 
+0

मैं 'opts_knit $ set (root.dir = "../");opts_chunk$set(fig.path =" ../ figures/test - ") के साथ आकृति भाग प्राप्त करने में सक्षम था। मैंने आपकी पोस्ट को देखने के बाद '../' कोशिश की है। अकेले काम नहीं करेगा, grrr। –

+0

@eric धन्यवाद। मैं सामान्य रूप से समझता हूं, लेकिन यह काम नहीं करता है। मैंने 'पेस्ट (getwd(), "/ figures /", sep = "")) का उपयोग करने की भी कोशिश की)' जो सामान्यीकृतपाथ() 'के लिए मैन्युअल तरीका है और यह काम नहीं करता है। मुझे मैन्युअल चाल पसंद है। मुझे लगता है कि शायद बटन पर क्लिक करने के बजाय 'बुनाई' के लिए एक कॉल, आउटपुट .md फ़ाइल सेट करने में सक्षम हो सकता है। फिर pandoc को कॉल आउटपुट .docx या .pdf फ़ाइल सेट करने के लिए काम कर सकता है। इसे देखना है। –

+0

हम्म, यह मेरे लिए काम करता है। [इस गीथहब रेपो] (https://github.com/ericpgreen/Rcode/tree/master/dir) से '/ dir' फ़ोल्डर को हथियाने का प्रयास करें। सुनिश्चित करें कि 'setwd() '' dir'' सेट करें। आपको बस 'बुनाई' पर क्लिक करने में सक्षम होना चाहिए। –

संबंधित मुद्दे