Ответ 1
Как другие опубликовали функции, а не объяснения, я воспользуюсь этим.
Распространяется с каждым пакетом - файл DESCRIPTION. Необязательно, сопровождающий может включать файл 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.
И фрагмент из информации DESCRIPTION:
> 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, информация CITATION не должна быть подмножеством информации DESCRIPTION. Пример из citation("base")
, который включает, помимо прочего, запись ISBN, которая не находится на выходе packageDescription("base")
.
Обновление 1. Если вы хотите показать любовь к авторам или сопровождающим, вот какой код получить список наиболее часто называемых авторов или сопровождающих, на основе вывода installed.packages()
. (Если вы хотите ограничить его пакетами, используемыми каким-то кодом, а затем проверить пакет mvbutils
и функцию foodweb
- можно было бы сходить с ума и дальше ранга по частоте вызовов или времени, потраченного, если вы используете Rprof
.)
К сожалению, этот код не разбивает строки на несколько имен, поэтому сотрудничество рассматривается как "человек", возможно, недооценивая работу отдельных лиц. Если вам нужен тщательный анализ, вам нужно будет немного поработать.:)
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