簡體   English   中英

如何確定R包的作者?

[英]How do I determine the author of an R package?

如何確定包的作者是誰? 鑒於我們擁有這個廣泛使用的代碼庫,我認為我參考我在分析中使用的軟件是合適的。

有沒有辦法以編程方式檢索作者和任何其他相關信息?

在偽代碼中,我想執行以下操作:

references("base")

我怎樣才能做到這一點?

為了能夠引用R或包,請使用citation

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

使用

packageDescription("base")

並閱讀...

需要一些清潔,但你明白了。 :)

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 <XXXXX@XXXXX.com>"

在評論中,Hadley建議了另一種直接從DESCRIPTION文件中閱讀的方法。

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

由於其他人已發布功能,而不是解釋,我將填寫此內容。

每個包分發的是一個描述文件。 可選地,維護者可以包括CITATION文件。

citation(pkgName) (其中pkgName是一個字符串)函數將首先查找CITATION文件,然后查找DESCRIPTION文件。 如果找到前者,它將顯示該文件的內容。 如果是后者,它將根據DESCRIPTION文件中的字段自動生成BibTeX輸出。 此輸出可能需要一些額外的修訂,因此在引用中直接使用內容之前要小心。

為了查看包描述, packageDescription(pkgName)packageDescription(pkgName) 這將返回一個項目列表,每個項目都基於DESCRIPTION文件中的字段。 如果您想以編程方式處理這些內容,這是您最好的選擇。

一個關鍵問題是包的作者和包的維護者可能不是同一個人。 如果您需要包裝方面的幫助,請聯系維護人員。 一個例子是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 <R-core@R-project.org>

請注意,列出的作者參與了不同的時間間隔,但是,如果您今天需要幫助,請發送電子郵件至R-core@R-project.org。

最后,由於維護人員可以創建自己的CITATION文件,因此CITATION信息不必是DESCRIPTION信息的子集。 一個例子來自citation("base") ,其中包括ISBN記錄,其不在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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM