Объединение идентификатора Google scholar и цикла pubid - PullRequest
0 голосов
/ 26 октября 2018

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

members <- data.frame(name = c("Linton C Freeman", "Ronald Burt", "Stephen P. Borgatti"),
                      scholar_id = c("quiVMg8AAAAJ", "g-R8XdkAAAAJ", "hlk4a4gAAAAJ"),
                      stringsAsFactors = F)

Затем я создал цикл for для получения публикаций для каждого исследователя:

pubs <- get_publications(member$scholar_id[1])
for(i in 2:nrow(member)){
           pubs_ <- get_publications(member$scholar_id[i])
           pubs <- rbind(pubs, pubs_)
}

Чтобы получить хороший список соавторов, которые мне нужно использоватьэтот синтаксис:

coauthors <- get_complete_authors(scholar_id, pubid)

Например:

co-authors <- get_complete_authors(members$scholar_id[1], pubs$pubid[1])

Я хочу перебрать членов, чтобы получить всех соавторов в кадре данных.Я предполагаю, что мне нужно вложить свои циклы, сначала проходя по пабам, а затем по членам.Мне также нужно добавить оператор pause в мой цикл, чтобы избежать ошибок HTTP 503.У меня вопрос, как мне построить цикл, который делает это?В конце концов, я хочу, чтобы dataframe имел pubid и авторов.Я знаю, как создать список краев из этого.Пожалуйста, помогите.

1 Ответ

0 голосов
/ 29 октября 2018

Вот как я бы подошел к проблеме, используя один data.frame, чтобы все было организовано.Я бы сделал это так, потому что, похоже, Google Scholar использует один и тот же идентификатор для ссылки на разные публикации, что делает жизнь интересной.

library(scholar)
library(tidyverse)

member <- data_frame(name = c("Linton C Freeman", "Ronald Burt", "Stephen P. Borgatti"),
                      scholar_id = c("quiVMg8AAAAJ", "g-R8XdkAAAAJ", "hlk4a4gAAAAJ"))

bib_data <- member %>% 
  #this lets mutate work on each row independently
  rowwise %>% 
  #produce a dataframe for each row
  mutate(pubs = list(get_publications(scholar_id))) %>% 
  #expand the dataframes
  unnest() %>% 
  #I've included this to keep the requests down for a demonstration
  filter(row_number() < 6) %>% 
  #as above
  rowwise %>% 
  #this now uses the scholar_id and pubid from each row to get the coauthor
  #information as a new column
  mutate(coauths = get_complete_authors(scholar_id, pubid))

Таким образом, вы можете избежать циклов в целом и, надеюсь, сохранить всезаписи организованы четко.

Работа с информацией соавтора - это немного другая проблема, потому что похоже, что форматы (особенно с точки зрения сокращений) не согласованы ...

...