2012-02-17 13 views
14

मैं कैसे निर्धारित कर सकता हूं कि पैकेज के लेखक कौन हैं? यह देखते हुए कि हमारे पास इस व्यापक रूप से उपयोग किए जाने वाले कोड बेस हैं, मुझे लगता है कि यह उचित है कि मैं अपने विश्लेषण में उपयोग किए जाने वाले सॉफ़्टवेयर का संदर्भ देता हूं।मैं आर पैकेज के लेखक को कैसे निर्धारित करूं?

क्या प्रोग्रामेटिक रूप से लेखक और किसी अन्य प्रासंगिक जानकारी को पुनर्प्राप्त करने का कोई तरीका है?

स्यूडोकोड में, मैं निम्नलिखित करना चाहते हैं:

references("base") 

मैं ऐसा कैसे कर सकता है?

+14

सावधान पर्यवेक्षक देखेंगे कि इस के साथ 10,000 वें सवाल यह है कि [टैग: r] टैग। आर-कोर और सभी पैकेज लेखकों के लिए धन्यवाद जिन्होंने आर को शानदार प्रणाली बनाई है। – Andrie

+7

तकनीकी रूप से यह दूसरा 10000 वां प्रश्न है। पिछला एक 10000 था, और उसके बाद एक सवाल फिर से हो गया, और अब आप इसे 10000 फिर से लाए हैं। अगर हम पीछे हटने वाले प्रश्न रखते हैं तो पूरे दिन मनाया जा सकता है! –

+3

प्रश्न का शीर्षक एक स्पष्ट उत्तर सुझाता है (@ स्पेस्डमैन नीचे से; 'पैकेज डिस्क्रिप्शन (" foo ") $ लेखक') फिर भी शरीर पानी को थोड़ा सा हल करता है। जहां तक ​​आर का संबंध है, वहां लेखक के बारे में स्पष्ट रूप से परिभाषित विचार है और यह 'विवरण' में है। 'उद्धरण() 'वास्तव में क्यू का पूरी तरह उत्तर देता है, हालांकि, क्योंकि यह दो चीजों में से एक है i) यदि पैकेज में' CITATION' फ़ाइल है तो यह प्रदर्शित करता है, और यदि मौजूद नहीं है, तो यह एक उद्धरण को स्वत: उत्पन्न करता है 'विवरण'। जब तक मैं 'उद्धरण' पढ़ता हूं तब तक यह रिची के जवाब से तुरंत स्पष्ट नहीं था। एक नई बात मैंने आज सीखा! एफटीडब्लू –

उत्तर

9

के रूप में अन्य लोगों के कार्यों को तैनात किया है, और न स्पष्टीकरण, मैं इस से भर देगा।

हर पैकेज के साथ वितरित एक वर्णन फ़ाइल है। वैकल्पिक रूप से, एक रखरखाव में एक सीआईटीएशन फ़ाइल शामिल हो सकती है।

citation(pkgName) (जहां pkgName एक वर्ण स्ट्रिंग है) फ़ंक्शन पहले सीआईटीएशन फ़ाइल की तलाश करेगा, फिर विवरण फ़ाइल। यदि पूर्व पाया जाता है, तो वह उस फ़ाइल की सामग्री पेश करेगा। यदि उत्तरार्द्ध, यह DESCRIPTION फ़ाइल में फ़ील्ड के आधार पर BibTeX आउटपुट स्वतः उत्पन्न करेगा। इस आउटपुट में कुछ अतिरिक्त संशोधन की आवश्यकता हो सकती है, इसलिए सीधे उद्धरण में सामग्री का उपयोग करने से पहले सावधान रहें।

पैकेज विवरण देखने के लिए, packageDescription(pkgName) चाल करेगा। यह आइटम की एक सूची वापस करेगा, प्रत्येक विवरण फ़ाइल से किसी फ़ील्ड पर आधारित होगा। यदि आप उन सामग्रियों के साथ प्रोग्रामेटिक रूप से काम करना चाहते हैं तो यह आपकी सबसे अच्छी शर्त है।

एक महत्वपूर्ण मुद्दा यह है कि पैकेज के लेखक और पैकेज के रखरखाव (ओं) एक ही व्यक्ति नहीं हो सकते हैं। यदि आपको किसी पैकेज के साथ सहायता की आवश्यकता है, तो आपको रखरखाव (ओं) से संपर्क करना चाहिए। एक उदाहरण nlme है। सबसे पहले, प्रशस्ति पत्र की जानकारी से एक टुकड़ा:

> citation("nlme") 

To cite package 'nlme' in publications use: 

    Jose Pinheiro, Douglas Bates, Saikat DebRoy, Deepayan Sarkar and the R Development Core Team (2011). nlme: Linear and 
    Nonlinear Mixed Effects Models. R package version 3.1-102. 

और विवरण की जानकारी से एक टुकड़ा:

> packageDescription("nlme") 
Package: nlme 
Title: Linear and Nonlinear Mixed Effects Models 
Author: Jose Pinheiro (S version), Douglas Bates (up to 2007), Saikat DebRoy (up to 2002), Deepayan Sarkar (up to 2005), the 
       R Core team. 
Maintainer: R-core <[email protected]> 

ध्यान दें कि सूचीबद्ध लेखकों विभिन्न अंतरालों पर भाग लिया, लेकिन, आप मदद चाहते हैं चाहिए आज, आप 'डी ईमेल आर[email protected]

अंत में, क्योंकि रखरखाव अपनी स्वयं की सीआईटीएशन फ़ाइल बना सकते हैं, सीआईटीएशन जानकारी को विवरण जानकारी का सबसेट नहीं होना चाहिए। एक उदाहरण citation("base") से है, जिसमें अन्य चीजों के अलावा, आईएसबीएन रिकॉर्ड, जो packageDescription("base") के आउटपुट में नहीं है।


अद्यतन 1. आप लेखक या देखरेख करने के लिए कुछ प्यार दिखाने के लिए चाहते हैं, तो यहाँ कुछ कोड installed.packages() के उत्पादन के आधार पर, सबसे अधिक बार नामित लेखक या देखरेख की एक सूची प्राप्त है। (यदि आप इसे किसी कोड द्वारा उपयोग किए गए पैकेजों तक सीमित करना चाहते हैं, तो mvbutils पैकेज और foodweb फ़ंक्शन देखें - Rprof का उपयोग करते समय, कॉल या समय की आवृत्ति द्वारा पागल और आगे रैंक प्राप्त हो सकता है।)

दुर्भाग्य से, यह कोड तारों को कई नामों में विभाजित नहीं करता है, इसलिए सहयोग को 1 व्यक्ति "के रूप में माना जाता है, संभवतः व्यक्तियों के काम को कम करना। यदि आप सावधानीपूर्वक विश्लेषण करना चाहते हैं, तो आपको थोड़ा और काम करना होगा। :)

getMaint <- function(x){ 
    return(packageDescription(x)$Maintainer) 
} 

getAuth <- function(x){ 
    return(packageDescription(x)$Author) 
} 

nicePrint <- function(x, N = 10){ 
    tmpTable <- head(sort(table(x), decreasing = TRUE), N) 
    tmpTable <- as.data.frame(tmpTable) 
    colnames(tmpTable) = "count" 
    return(tmpTable) 
} 

vPkgs <- installed.packages()[,"Package"] 

listA <- mapply(getAuth, vPkgs) 
listM <- mapply(getMaint, vPkgs) 

nicePrint(listA) 
nicePrint(listM) 

यहां एक कंप्यूटर से एक उदाहरण है; बदसूरत अस्पष्ट ईमेल पते के लिए क्षमा चाहते हैं। ऊपर दिया गया कोड DESCRIPTION फ़ाइल से सही ईमेल पते उत्पन्न करता है, लेकिन मैंने उन्हें संपादित कर दिया है।

लेखक:

nicePrint(listA) 
                count 
Diethelm Wuertz and many others, see the SOURCE file 14 
Hadley Wickham <xxxxxxxxxxxxxxxxxxx>      7 
R Development Core Team and contributors worldwide  7 
Henrik Bengtsson <xxxxxxxxxxxxxxxxx>      4 
Revolution Analytics          4 
Brian Ripley <xxxxxxxxxxxxxxxxxxxxx>.     3 
David Scott <xxxxxxxxxxxxxxxxxxxxxx>      3 
Luke Tierney <xxxxxxxxxxxxxxxxxxx>      3 
R Development Core Team         3 

देखरेख:

nicePrint(listM) 
               count 
Rmetrics Core Team <xxxxxxxxxxxxxxxxxxxxxxxxxxx> 19 
R Core Team <xxxxxxxxxxxxxxxxxxxx>     13 
Brian Ripley <xxxxxxxxxxxxxxxxxxxxx>     9 
Achim Zeileis <xxxxxxxxxxxxxxxxxxxxxxxxxxx>   7 
Hadley Wickham <xxxxxxxxxxxxxxxxxxx>     7 
Torsten Hothorn <xxxxxxxxxxxxxxxxxxxxxxxxxxxxx>  7 
David Scott <xxxxxxxxxxxxxxxxxxxxxx>     5 
Henrik Bengtsson <xxxxxxxxxxxxxxxxx>     5 
Trevor Hastie <xxxxxxxxxxxxxxxxxxx>     5 
Luke Tierney <xxxxxxxxxxxxxxxxxxx>     4 
10

उपयोग

packageDescription("base") 

और पढ़ें ...

+3

या बस सबसेट 'पैकेज डिस्क्रिप्शन ("बेस") $ लेखक' ;-) –

+0

जैसा कि उद्धरण() 'विवरण फ़ाइल पर आधारित है, एक उद्धरण फ़ाइल अनुपस्थित है, यह सही उत्तर है। एनबी: 'बेस' को किसी विशिष्ट पैकेज नाम या' पीकेजी' के साथ प्रतिस्थापित करना अच्छा हो सकता है, ताकि अन्य इस उत्तर की सामान्यता को महसूस कर सकें। – Iterator

13

आर या एक पैकेज का हवाला देते हैं करने के लिए, citation का उपयोग सक्षम होने के लिए।

citation()  #for base packages or R itself 
citation("nlme") 
+0

मुझे एक सेकंड से मारो। :) –

+2

@ रोमन लूस्ट्रिक: http://www.youtube.com/watch?v = By1JQFxfLMM –

+0

आपको उपयुक्त bibTeX संदर्भ भी देता है, बहुत अच्छा। –

9

कुछ सफाई की आवश्यकता है, लेकिन आपको विचार मिलता है। :)

library(RCurl) 
gg <- getURL("http://cran.r-project.org/web/packages/ggdendro/index.html") 
gg <- readLines(textConnection(gg)) 
gg[grep("Author:", gg)+1] 
[1] "<td>Andrie de Vries</td></tr>" 

रिची मुझे यह करने के लिए हरा, लेकिन यहाँ citation का उपयोग कर कुछ जानकारी निकालने की एक छोटी तरीका है।

citation("ggdendro")$author 
[1] "Andrie de Vries <[email protected]>" 

टिप्पणियों में, हैडली ने सीधे विवरण फ़ाइल से पढ़ने का एक और तरीका सुझाया।

> gg <- read.dcf(url("http://cran.r-project.org/web/packages/ggdendro/DESCRIPTION")) 
> gg[, "Maintainer"] 
          Maintainer 
"Andrie de Vries <[email protected]>" 
+1

इस उत्तर के बारे में क्या अच्छा है यह है कि यह अनइंस्टॉल किए गए पैकेज पर काम करता है। –

+3

@ बेनबॉल्कर 'read.dcf (url (" http://cran.r-project.org/web/packages/ggdendro/DESCRIPTION ")) 'यह भी अच्छा है। – hadley

+0

धन्यवाद, @ हैडली! यदि आपको कोई फर्क नहीं पड़ता है, तो मैं पूर्णता के लिए उपर्युक्त उत्तर में इसे जोड़ रहा हूं। –

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