r语言 - 在for函数中检索google scholar ID



我有一个学者列表来解析他们可用的谷歌学者ID。不知何故,我获得了"下标越界"的错误,但我无法与此问题提供的其他响应联系起来。代码如下。谢谢!:

library(scholar)
for (i in 1:200){

scholars<-get_scholar_id(last_name = list$Last.Name[i], 
first_name = list$First.Name[i],
affiliation = "ABC University")
}

结果是:

No Scholar ID found.
No Scholar ID found.
Error in tables[[1]] : subscript out of bound

但是,如果我放了:

scholars_B<-get_scholar_id(last_name = list$Last.Name[3], 
first_name = list$First.Name[3],
affiliation = "ABC University")

我获得了Google scholar ID,没有任何问题

可再生的例子:

# list from top h-index researchers (just for the purpose of this sample)
Last.Name <- c("Colditz", "Lander", "Akira", "Langer", "Karin")
First.Name <- c("Graham", "Eric", "Shizuo", "Robert", "Michael")
df <- data.frame(Last.Name, First.Name)
print (df)

library(scholar)
#First try: 
for(i in 1:3){

scholars<-get_scholar_id(last_name = df$Last.Name[i], 
first_name = df$First.Name[i])
}
#Error: Error in tables[[1]] : subscript out of bounds

#Suggestion by @akrun
for(i in seq_along(df$Last.Name)){

scholars<-get_scholar_id(last_name = df$Last.Name[i], 
first_name = df$First.Name[i])
}
#Error: Error in tables[[1]] : subscript out of bounds
#This way works, but not with the for function: 
scholars<-get_scholar_id(last_name = df$Last.Name[3], 
first_name = df$First.Name[3])
print(scholars)

部分元素没有学者id,返回错误。一种选择是使用tryCatchpossibly(来自purrr)

绕过这些情况。
library(purrr)
library(scholar)
p_get_scholar_id <- possibly(get_scholar_id, otherwise = NA_character_)
scholars <- character(nrow(df))
for(i in seq_along(scholars)) {
scholars[i] <- p_get_scholar_id(last_name = df$Last.Name[i], 
first_name = df$First.Name[i])
}

与产出

scholars
#[1] NA             "LXVfPc8AAAAJ" "0TG2laoAAAAJ" NA             "xVvyb1gAAAAJ"

最新更新