Open gorkang opened 6 years ago
Just to be sure, I can do what I need with the following code, but it seems a bit too complex:
DOIS = c("10.22199/s07187475.2015.0001.00004", "10.1093/brain/aww231", "10.1038/s41562-017-0118")
altmetrics_lists = DOIS %>% map( ~ tryCatch( {altmetrics(doi = .x)},
error = function(e) {
cat(paste0("•Error• ", .x, "\n"))
}))
altmetrics_lists[sapply(altmetrics_lists, is.null)] <- NULL
altmetrics_df = altmetrics_lists %>% map_df(~rAltmetric::altmetric_data(.x))
👋 @gorkang Thanks for this report. I will change the behavior in an upcoming update. In the meantime, it is fairly simple to catch errors and skip them with some tidyverse code. See an example I wrote for another user yesterday:
https://gist.github.com/karthik/78016fc78d52156561f5f543defb7ec0
Right now, if you search for a DOI that does not have altmetric data, you get an error "No metrics found for object". Would it be possible for the function to just send a warning when the DOI is not found?
For example, if you do:
altmetrics(doi = "10.22199/s07187475.2015.0001.00004")
You will get:
The main issue is that if I want to get the altmetric data for a group of papers, I have to include ways to keep on going when there is an error, so, something like this fails miserably:
If I remove the offending DOI, I can get all the altmetric info easily:
As far as I can see, changing:
error("No metrics found for object")
forwarning("No metrics found for object")
would suffice?