Поскольку другие опубликовали функции, а не объяснения, я заполню это.
В каждую упаковку распространяется файл ОПИСАНИЕ. При желании сопровождающий может включать файл CITATION.
Функция citation(pkgName)
(где pkgName
- строка символов) будет сначала искать файл CITATION, а затем файл DESCRIPTION. Если первый найден, он представит содержимое этого файла. Если последнее, он автоматически сгенерирует вывод BibTeX на основе полей в файле DESCRIPTION. Этот вывод может потребовать некоторой дополнительной ревизии, поэтому будьте осторожны перед использованием содержимого непосредственно в цитате.
Чтобы просмотреть описание пакета, 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.
И фрагмент из ОПИСАНИЯ info:
> 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