Есть ли способ найти количество цитат для пакетов R? - PullRequest
2 голосов
/ 08 апреля 2020

Я пытаюсь получить количество цитат для разных пакетов R. Я знаю, что scholar использует Google Scholar для получения списка публикаций с указанным идентификатором пользователя.

Предположим, что единственная информация, которую мы имеем, получена из citation("package"), есть ли способ получить количество цитирований этого пакета из Google Scholar? Может быть, есть метаданные, которые содержат эту информацию, или пакет, который делает это?

Есть похожий вопрос - Получить цитаты из журнальной статьи, используя R

Но из того, что я видел, citation("package") выглядит по-разному для каждого пакета, поэтому нет способа автоматически получить заголовок публикации.

1 Ответ

1 голос
/ 08 апреля 2020

Если пакет R содержит ссылку в формате bibtex, вы можете извлечь заголовок, а затем собрать цитаты для каждого, как показано в ссылке, которую вы разместили. В этом примере извлекаются все пакеты в CRAN и проверяется информация о цитировании:

library(httr)
library(RCurl)
library(XML)

urldata <- getURL("https://cran.r-project.org/web/packages/available_packages_by_date.html")
CRAN <- readHTMLTable(urldata,
                      stringsAsFactors = FALSE)
CRAN_packages <- CRAN[["NULL"]][[" Package "]]
packages_df <- as.data.frame(CRAN_packages,
                             stringsAsFactors = FALSE)
list_of_citations <- NULL

for (f in 1:nrow(packages_df)) {
  tryCatch({
    list_of_citations <<- append(list_of_citations,
                                 citation(package = packages_df$CRAN_packages[f],
                                          auto = TRUE))
    }, error=function(e){
      cat(paste("No citations available for package",
                packages_df$CRAN_packages[f],
                sep = " "),
          conditionMessage(e), "\n")
      })
}

list_of_citations$title

Интересно, что из 15 556 пакетов в CRAN очень немногие имеют правильно отформатированную информацию о цитировании ... Другие люди указали на эту проблему ( например, https://stat.ethz.ch/pipermail/r-devel/2010-November/058977.html), но проблема еще не решена (или, возможно, мой код не захватывает их все)

...