rscopus_plus: An extension of the rscopus package
Sometimes it’s useful to do a bibliometric analysis. To this end, the rscopus_plus
functions (Bernabeu, 2024) extend the R package rscopus
(Muschelli, 2022) to administer the search quota and to enable specific searches and comparisons.
scopus_search_plus
runsrscopus::scopus_search
as many times as necessary based on the number of results and the search quota.scopus_search_DOIs
gets DOIs fromscopus_search_plus
, which can then be imported into a reference manager, such as Zotero, to create a list of references.scopus_search_additional_DOIs
searches for additional DOIs.scopus_comparison
compares counts of publications on various topics throughout a certain period. The comparison terms are shown in the legend and in the lines, and they all include the reference query.plot_scopus_comparison
draws a line plot with the output fromscopus_comparison
.
Note. Before using any of the first four functions, the user must set their Scopus API key confidentially (see rscopus guidelines).
Example of use
As an example (also available on GitHub), we’ll visualise the prevalence of three executive functions in the literatures on second and third language throughout the past two decades.
First, we’ll use scopus_comparison()
(fragment shown below).
Next, we’ll use plot_scopus_comparison()
(fragment shown below).
library(rscopus)
# set_api_key('your_key_here') # (see https://cran.r-project.org/web/packages/rscopus/vignettes/api_key.html)
# I'll read in mine from a file. If you do this, make sure not to share your file.
api_key = readLines('scopus_key.txt')
set_api_key(api_key)
library(dplyr)
library(patchwork)
# Load in Scopus search functions from https://github.com/pablobernabeu/rscopus_plus
source('https://raw.githubusercontent.com/pablobernabeu/rscopus_plus/main/scopus_comparison.R')
source('https://raw.githubusercontent.com/pablobernabeu/rscopus_plus/main/plot_scopus_comparison.R')
# General parameters
search_period = 1990:2023
quota = 20
# Prevalence of three executive functions in second language studies from 2000 to 2023.
# In addition to "second language", the reference query includes the terms
# "learning" and "cognition" to make the scope of the search more relevant to
# the topic of interest.
reference_query = '"second language"'
comparison_terms = c( '"working memory"', 'inhibit*', '"implicit learning"' )
N_comparison_terms = length(comparison_terms)
L2_EF =
scopus_comparison(reference_query, comparison_terms,
search_period, quota, verbose = FALSE,
reference_query_field_tag = 'TITLE-ABS-KEY')
saveRDS(L2_EF, 'L2_EF.rds')
L2_EF = readRDS('L2_EF.rds') # it's possible to load results directly
plot_L2_EF =
plot_scopus_comparison(L2_EF,
pub_count_in_legend = FALSE,
pub_count_in_lines = TRUE) +
scale_color_manual(
values = c( "[ref.] + '\"working memory\"'" = scales::hue_pal()(N_comparison_terms)[1],
"[ref.] + 'inhibit*'" = scales::hue_pal()(N_comparison_terms)[2],
"[ref.] + '\"implicit learning\"'" = scales::hue_pal()(N_comparison_terms)[3] )
) +
guides(colour = guide_legend(override.aes = list(alpha = 1))) +
# Prepare layout for the multi-plot combination
theme(axis.text.x = element_blank(), axis.title.x = element_blank(),
legend.position = 'none', plot.margin = margin(0, 0, 15, 0))
# Prevalence of three executive functions in third language studies from 2000 to 2023.
# In addition to "third language", the reference query includes the terms "learning"
# and "cognition" to make the scope of the search more relevant to the topic of
# interest.
reference_query = '"third language"'
# Other parameters identical to those used in the query above.
L3_EF =
scopus_comparison(reference_query, comparison_terms,
search_period, quota, verbose = FALSE,
reference_query_field_tag = 'TITLE-ABS-KEY')
saveRDS(L3_EF, 'L3_EF.rds')
L3_EF = readRDS('L3_EF.rds') # it's possible to load results directly
plot_L3_EF =
plot_scopus_comparison(L3_EF,
pub_count_in_legend = FALSE,
pub_count_in_lines = TRUE) +
scale_color_manual(
values = c( "[ref.] + '\"working memory\"'" = scales::hue_pal()(N_comparison_terms)[1],
"[ref.] + 'inhibit*'" = scales::hue_pal()(N_comparison_terms)[2],
"[ref.] + '\"implicit learning\"'" = scales::hue_pal()(N_comparison_terms)[3] )
) +
guides(colour = guide_legend(override.aes = list(alpha = 1))) +
# Prepare layout for the multi-plot combination
theme(axis.text.x = element_text(margin = margin(7, 0, 0, 0, 'pt')),
axis.title.x = element_text(margin = margin(8, 0, 0, 0, 'pt')),
legend.position = 'inside', legend.position.inside = c(.82, .8))
# Combine plots
plot_L2_EF + plot_L3_EF +
plot_layout(ncol = 1, axes = 'collect') &
theme(axis.text = element_text(size = 10),
axis.title = element_text(vjust = 0.5, size = 13),
plot.title = element_markdown(hjust = 0.5, size = 12),
legend.text = element_text(size = 11,),
legend.background = element_rect(color = 'grey80', fill = 'grey99'),
legend.margin = margin(0, 5, 2, 0))
The total number of publications over the current period is shown between brackets after each query.
References
Bernabeu, P. (2024). rscopus_plus. OSF. https://doi.org/10.17605/OSF.IO/BUZQ6
Muschelli, J. (2022). Package ’rscopus’. CRAN. https://cran.r-project.org/web/packages/rscopus/rscopus.pdf