如何确定R包的作者?

And*_*rie 15 r

如何确定包的作者是谁?鉴于我们拥有这个广泛使用的代码库,我认为我参考我在分析中使用的软件是合适的.

有没有办法以编程方式检索作者和任何其他相关信息?

在伪代码中,我想执行以下操作:

references("base")
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Ric*_*ton 13

为了能够引用R或包,请使用citation.

citation()        #for base packages or R itself
citation("nlme")
Run Code Online (Sandbox Code Playgroud)


Spa*_*man 10

使用

packageDescription("base")
Run Code Online (Sandbox Code Playgroud)

并阅读...

  • 或者只是子集`packageDescription("base")$ Author` ;-) (3认同)

Rom*_*rik 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>"
Run Code Online (Sandbox Code Playgroud)

Richie打败了我,但这是一个使用提取一些信息的简短方法citation.

citation("ggdendro")$author
[1] "Andrie de Vries <XXXXX@XXXXX.com>"
Run Code Online (Sandbox Code Playgroud)

在评论中,Hadley建议了另一种直接从DESCRIPTION文件中阅读的方法.

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

  • @BenBolker`read.dcf(url("http://cran.r-project.org/web/packages/ggdendro/DESCRIPTION"))`甚至更好. (3认同)

Ite*_*tor 9

由于其他人已发布功能,而不是解释,我将填写此内容.

每个包分发的是一个描述文件.可选地,维护者可以包括CITATION文件.

citation(pkgName)(其中,pkgName是一个字符串)函数将寻找现有文件中的第一,则描述文件.如果找到前者,它将显示该文件的内容.如果是后者,它将根据DESCRIPTION文件中的字段自动生成BibTeX输出.此输出可能需要一些额外的修订,因此在引用中直接使用内容之前要小心.

为了查看包描述,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.
Run Code Online (Sandbox Code Playgroud)

以及描述信息的片段:

> 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>
Run Code Online (Sandbox Code Playgroud)

请注意,列出的作者参与了不同的时间间隔,但是,如果您今天需要帮助,请发送电子邮件至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)
Run Code Online (Sandbox Code Playgroud)

这是一台计算机的例子; 为丑陋的模糊电子邮件地址道歉.上面的代码从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
Run Code Online (Sandbox Code Playgroud)

维护者:

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
Run Code Online (Sandbox Code Playgroud)