R Language
Devtools के साथ संकुल बनाना
खोज…
परिचय
यह विषय devtools पैकेज के साथ खरोंच से आर संकुल के निर्माण को कवर करेगा।
टिप्पणियों
पैकेज बनाना और वितरित करना
यह एक कॉम्पैक्ट गाइड है कि कैसे अपने कोड से जल्दी से एक आर पैकेज बनाएं। जब उपलब्ध हो, तो प्रचलित दस्तावेज़ों को लिंक किया जाना चाहिए और यदि आपको स्थिति का गहन ज्ञान चाहिए तो पढ़ना चाहिए। अधिक संसाधनों के लिए टिप्पणियां देखें।
वह निर्देशिका जहां आपका कोड खड़ा होता है, को ./
रूप में संदर्भित किया जाएगा, और सभी आदेशों को इस फ़ोल्डर में R प्रॉम्प्ट से निष्पादित किया जाना है।
प्रलेखन का निर्माण
आपके कोड के लिए प्रलेखन एक प्रारूप में होना चाहिए जो कि LaTeX के समान है।
हालाँकि, हम प्रक्रिया को सरल बनाने के लिए roxygen
नामक उपकरण का उपयोग करेंगे:
install.packages("devtools")
library("devtools")
install.packages("roxygen2")
library("roxygen2")
Roxygen के लिए पूरा मैन पेज यहां उपलब्ध है । यह बहुत हद तक डॉक्सीजन के समान है।
यहाँ कैसे roxygen के साथ एक समारोह दस्तावेज़ के बारे में एक व्यावहारिक नमूना है:
#' Increment a variable.
#'
#' Note that the behavior of this function
#' is undefined if `x` is not of class `numeric`.
#'
#' @export
#' @author another guy
#' @name Increment Function
#' @title increment
#'
#' @param x Variable to increment
#' @return `x` incremented of 1
#'
#' @seealso `other_function`
#'
#' @examples
#' increment(3)
#' > 4
increment <- function(x) {
return (x+1)
}
और यहाँ परिणाम होगा ।
यह एक विगनेट बनाने के लिए भी सिफारिश की जाती है (विषय बनाना विगनेट्स देखें ), जो आपके पैकेज के बारे में एक पूर्ण मार्गदर्शिका है।
पैकेज कंकाल का निर्माण
यह मानते हुए कि आपका कोड फाइलों में उदाहरण के लिए लिखा है ./script1.R
और ./script2.R
, अपने पैकेज की फ़ाइल ट्री बनाने के लिए निम्नलिखित कमांड लॉन्च करें:
package.skeleton(name="MyPackage", code_files=c("script1.R","script2.R"))
फिर ./MyPackage/man/
में सभी फ़ाइलों को ./MyPackage/man/
। अब आपको दस्तावेज़ संकलित करना है:
roxygenize("MyPackage")
आप अपने दस्तावेज़ से R CMD Rd2pdf MyPackage
का उपयोग कमांड प्रॉम्प्ट से ./
। में शुरू करते हुए एक संदर्भ पुस्तिका तैयार करें।
पैकेज गुणों का संस्करण
1. पैकेज विवरण
अपनी आवश्यकताओं के अनुसार संशोधित करें। ./MyPackage/DESCRIPTION
फ़ील्ड Package
, Version
, License
, Description
, Title
, Author
और Maintainer
अनिवार्य हैं, अन्य वैकल्पिक हैं।
अपने पैकेज दूसरों संकुल पर निर्भर करता है, तो उन्हें नाम के एक फ़ील्ड में निर्दिष्ट Depends
(आर संस्करण <3.2.0) या Imports
(आर संस्करण> 3.2.0)।
2. वैकल्पिक फ़ोल्डर
एक बार जब आप कंकाल का निर्माण शुरू करते हैं, ./MyPackage/
R/
./MyPackage/
R/
केवल R/
और man/
./MyPackage/
। हालाँकि, इसमें कुछ अन्य हो सकते हैं:
-
data/
: यहां आप वह डेटा रख सकते हैं जो आपकी लाइब्रेरी को चाहिए और वह कोड नहीं है। इसे.RData
एक्सटेंशन के साथ डेटासेट के रूप में सहेजा जाना चाहिए, और आप इसे रनटाइम परdata()
औरload()
साथ लोड कर सकते हैं -
tests/
: इस फ़ोल्डर में सभी कोड फ़ाइलों को स्थापित समय पर चलाया जाएगा। यदि कोई त्रुटि है, तो स्थापना विफल हो जाएगी। -
src/
: C / C ++ / फोरट्रान स्रोत फ़ाइलों के लिएRcpp
आपको आवश्यकता है (Rcpp
का उपयोगRcpp
...)। -
exec/
: अन्य निष्पादनों के लिए। -
misc/
: मुश्किल से बाकी सब कुछ के लिए।
अंतिम रूप देना और निर्माण करना
आप हटा सकते हैं ./MyPackage/Read-and-delete-me
।
जैसा कि अभी है, आपका पैकेज स्थापित होने के लिए तैयार है।
आप इसे devtools::install("MyPackage")
साथ स्थापित कर सकते हैं devtools::install("MyPackage")
।
अपने पैकेज को स्रोत टारबॉल के रूप में बनाने के लिए, आपको कमांड प्रॉम्प्ट से ./
: R CMD build MyPackage
करने के लिए, निम्नलिखित कमांड को निष्पादित करने की आवश्यकता है ./
अपने पैकेज का वितरण
जीथब के माध्यम से
बस MyPackage नामक एक नया रिपॉजिटरी बनाएं और MyPackage/
में मास्टर शाखा में सब कुछ अपलोड करें। यहाँ एक उदाहरण है ।
तब कोई भी आपके पैकेज को gitub से devtools से स्थापित कर सकता है:
install_package("MyPackage", "your_github_usename")
CRAN के माध्यम से
आपके पैकेज को CRAN रिपोजिटरी नीति का पालन करने की आवश्यकता है। इसमें शामिल है, लेकिन यह सीमित नहीं है: आपका पैकेज क्रॉस-प्लेटफ़ॉर्म (कुछ विशेष मामलों को छोड़कर) होना चाहिए, इसे R CMD check
टेस्ट पास करना चाहिए।
यहाँ सबमिशन फॉर्म है । आपको स्रोत टारबॉल अपलोड करना होगा।
विगनेट्स बनाना
एक विगनेट आपके पैकेज का एक लंबा-चौड़ा गाइड है। फंक्शन डॉक्यूमेंटेशन बहुत अच्छा है यदि आप उस फ़ंक्शन का नाम जानते हैं जिसकी आपको आवश्यकता है, लेकिन यह अन्यथा बेकार है। एक विगनेट एक पुस्तक अध्याय या एक अकादमिक पेपर की तरह है: यह उस समस्या का वर्णन कर सकता है जिसे आपके पैकेज को हल करने के लिए डिज़ाइन किया गया है, और फिर पाठक को दिखाएं कि इसे कैसे हल किया जाए।
विगनेट्स पूरी तरह से मार्कडाउन में बनाए जाएंगे।
आवश्यकताएँ
- रमार्कडाउन:
install.packages("rmarkdown")
- Pandoc
विगनेट निर्माण
devtools::use_vignette("MyVignette", "MyPackage")
अब आप अपने ./vignettes/MyVignette.Rmd
को ./vignettes/MyVignette.Rmd
पर संपादित कर सकते हैं।
आपके विगनेट में पाठ को मार्कडाउन के रूप में स्वरूपित किया गया है।
मूल मार्काडाउन का एकमात्र जोड़, एक टैग है जो R कोड लेता है, इसे चलाता है, आउटपुट कैप्चर करता है, और इसे स्वरूपित Markdown में अनुवाद करता है:
```{r}
# Add two numbers together
add <- function(a, b) a + b
add(10, 20)
```
के रूप में प्रदर्शित करेगा:
# Add two numbers together
add <- function(a, b) a + b
add(10, 20)
## [1] 30
इस प्रकार, आपके द्वारा अपने विगनेट्स में उपयोग किए जाने वाले सभी पैकेजों को ./DESCRIPTION
में निर्भरता के रूप में सूचीबद्ध किया जाना चाहिए।