लक्ष्य
मैं अपने पिछले सभी हिस्सों पर हिस्सों पर निर्भर करके डेटा विश्लेषण पुन: उत्पन्न करना चाहता हूं। इसलिए, यदि 3 भाग हैं और मैं पहले खंड में कुछ बदलता हूं तो बाद के 2 हिस्सों को फिर से चलाने चाहिए ताकि वे आउटपुट में किए गए परिवर्तन को प्रतिबिंबित कर सकें। मैं इस स्थिति को दस्तावेज़ के शीर्ष पर वैश्विक खंड विकल्पों में जोड़ना चाहता हूं ताकि मुझे dependson
कई बार उपयोग न करना पड़े। अगर यह संशोधित नहीं है और cache=TRUE
कोड भाग बनाने के लिए knitr/rmarkdown में पिछले सभी हिस्सों पर निर्भर कैसे करें?
समस्याएं
एक हिस्सा के आउटपुट नहीं बदलते। कोड युक्त मात्रा के लिए, मैं उन सब को पिछले अभियानों दस्तावेज़ के शीर्ष पर निम्नलिखित के प्रयोग पर भरोसेमंद बना सकते हैं:
```{r setup, echo=FALSE}
# set global chunk options:
library(knitr)
opts_chunk$set(cache=TRUE, autodep = TRUE)
dep_auto()
```
यदि उपरोक्त मात्रा के किसी भी बदल गया है, बाद के सभी हिस्सा दोबारा चला रहे हैं। लेकिन अगर मैं आर स्क्रिप्ट पढ़ने के लिए भागों में source()
का उपयोग करता हूं तो यह काम नहीं करता है। अगर मैं 1 2 मात्रा में कोई परिवर्तन तीसरा हिस्सा knit
टिंग के बाद सही उत्पादन देता है, अब
---
title: "Untitled"
output: html_document
---
```{r setup, echo=FALSE}
# set global chunk options:
library(knitr)
opts_chunk$set(cache=TRUE, autodep = TRUE)
dep_auto()
```
# Create Data
```{r}
#source("data1.R")
x <- data.frame(col1 = 4:10, col2 = 6:12)
x
```
# Summaries
```{r}
#source("data2.R")
median1.of.x <- sapply(x, function(x) median(x)-1)
sd.of.x <- sapply(x, sd)
plus.of.x <- sapply(x, function(x) mean(x)+1)
jj <- rbind(plus.of.x, sd.of.x, median1.of.x)
```
```{r}
jj
```
: के बाद एक उदाहरण दस्तावेज है। लेकिन अगर इसके बजाय मैंने पहले खंड का कोड एक स्रोत फ़ाइल data1.R
में रखा है और दूसरी चंक फाइल data2.R
में है, तो ग्लोबल चंक विकल्पों को पहले जैसा ही रखा जाए, अगर मैं स्रोत फ़ाइलों में कोई बदलाव करता हूं तो वे तीसरे हिस्से के आउटपुट में सही ढंग से दिखाई नहीं दे रहे हैं। उदाहरण के लिए, x <- data.frame(col1 = 5:11, col2 = 6:12)
के लिए बदल रहा x
उपज चाहिए:
> jj
col1 col2
plus.of.x 9.000000 10.000000
sd.of.x 2.160247 2.160247
median1.of.x 8.000000 9.000000
लेकिन source()
के उपयोग के रूप में, ऊपर चर्चा की knitr
दस्तावेज़ रिपोर्ट के साथ:
jj
## col1 col2
## mean.of.x 5.000000 9.000000
## sd.of.x 2.160247 2.160247
## minus.of.x 6.000000 10.000000
क्या सेटिंग्स मैं knitr
में source
उपयोग करने के लिए बदलने की जरूरत है सही ढंग से दस्तावेज़?
जब आप 'source' विधि का उपयोग करें, आप' x <बाहर टिप्पणी कर रहे हैं - data.frame() 'लाइन, सही है? – rawr
Knitr ऐसा होने के लिए आपको आवश्यक घोषणात्मक वर्कफ़्लो के लिए बहुत उपयुक्त नहीं है। मैं बनाने और मेकफ़ाइल बनाने की सलाह दूंगा, या यदि आप आर के भीतर पूरी तरह से रहना चाहते हैं, तो उत्कृष्ट [रीमेक पैकेज] (https://github.com/richfitz/remake) – Ben
@rawr हां, मैं केवल 'स्रोत' कमांड रखता हूं और अन्य सभी को टिप्पणी करें। –