如何强制R在我的包的引用()输出中包含贡献者(或其他角色)?

时间:2017-09-05 20:29:09

标签: r packaging r-package

我正在编写我的第一个R包,跟随Hadley Wickham关于该主题的出色book。上面链接的本书部分包含通过包的DESCRIPTION文件添加作者的示例。

博士。 Wickham指出“full list of roles非常全面。如果你的包装有樵夫('wdc'),词作者('lyr')或服装设计师('cst'),你可以舒服地休息,你可以正确描述他们的角色在创建你的包。“

我遇到的问题是,只有具有“作者”角色的人才会被包含在citation()的输出中 - 樵夫,词作者和服装设计师都不会。我希望我的包的非作者贡献者被包含在引文中,但不希望(错误地)将它们列为作者(即,具有“作者”/ aut的角色)

例如,如果我在DESCRIPTION文件中包含以下内容(csplisted as“项目顾问”):

Authors@R: c(
    person("John", "Doe", email = "jdoe@example1.com", role = c("aut", "cre")),
    person("Jane", "Smith", email = "jsmith@example2.com", role = "csp", comment = "Provided intellectual overview."))

... citation('mypackagename')将提供以下内容:

To cite package ‘mypackagename’ in publications use:

  John Doe (NA). mypackagename: My package description. R package version 0.1.0.
  https://github.com/link/to/mypackagename

A BibTeX entry for LaTeX users is

  @Manual{,
    title = {mypackagename: My package description},
    author = {John Doe},
    note = {R package version 0.1.0},
    url = {https://github.com/link/to/mypackagename},
  }

此外,?mypackagename在“作者”下为贡献者返回[NA]

Maintainer: John Doe jdoe@example1.com

Other contributors:

Jane Smith jsmith@example2.com (Provided intellectual overview.) [NA]

似乎要解决这个问题,Hmisc文件中的DESCRIPTIONuses the following的作者:

Author: Frank E Harrell Jr <f.harrell@vanderbilt.edu>, with
  contributions from Charles Dupont and many others.

如何强制R在citation()输出中包含非作者贡献者(其他角色)? Hmisc作者的方法在这里最好吗?看起来这可能会破坏Authors@R提供的干净的元数据解析,所以我对使用这种方法犹豫不决。

我会感激任何指针!

1 个答案:

答案 0 :(得分:1)

您不能在citation()输出中包含其他角色。检查the source of citation(),它只解析作者字段,源代码中甚至还有一个注释:

    ## <NOTE>
    ## Older versions took persons with no roles as "implied" authors.
    ## Now we only use persons with a name and a 'aut' role.  If there
    ## are none, we use persons with a name and a 'cre' role.
    ## If this still gives nothing (which really should not happen), we
    ## fall back to the plain text Author field.
    ## Checking will at least note the cases where there are no persons
    ## with names and 'aut' or 'cre' roles.

因此,包含其他角色的唯一方法是使用纯文本描述,如Hmisc包的示例。