diff --git a/.Rbuildignore b/.Rbuildignore index 1a932a77..5c9af37a 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -22,3 +22,5 @@ Rubbish ^inst/biblioshiny/rsconnect ^rsconnect +^CRAN-SUBMISSION$ +^cran-comments\.md$ diff --git a/NAMESPACE b/NAMESPACE index ad729274..b312f912 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -81,7 +81,6 @@ importFrom(Matrix,Matrix) importFrom(Matrix,MatrixClass) importFrom(Matrix,Ops) importFrom(Matrix,Summary) -importFrom(Matrix,T2graph) importFrom(Matrix,abIseq) importFrom(Matrix,abIseq1) importFrom(Matrix,all.equal) @@ -115,7 +114,6 @@ importFrom(Matrix,forceSymmetric) importFrom(Matrix,format) importFrom(Matrix,formatSpMatrix) importFrom(Matrix,formatSparseM) -importFrom(Matrix,graph2T) importFrom(Matrix,head) importFrom(Matrix,image) importFrom(Matrix,invPerm) @@ -186,15 +184,18 @@ importFrom(dplyr,bind_rows) importFrom(dplyr,count) importFrom(dplyr,cummean) importFrom(dplyr,desc) +importFrom(dplyr,distinct) importFrom(dplyr,do) importFrom(dplyr,group_by) importFrom(dplyr,if_all) importFrom(dplyr,inner_join) +importFrom(dplyr,join_by) importFrom(dplyr,left_join) importFrom(dplyr,mutate) importFrom(dplyr,mutate_at) importFrom(dplyr,mutate_if) importFrom(dplyr,n) +importFrom(dplyr,reframe) importFrom(dplyr,relocate) importFrom(dplyr,rename) importFrom(dplyr,rename_with) diff --git a/NEWS b/NEWS index 73b68227..730f8551 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,7 @@ -bibliometrix v4.1.4 (Release date: ) +bibliometrix v4.1.4 (Release date: 2023-11-29) Changes: +* Biblioshiny: After the data quality check, the menus of the analyses that cannot be performed are hidden * Start to adding support to OpenAlex data * Improvements in historiograph: - Improved Scopus algorithm to match local citations @@ -8,6 +9,8 @@ Changes: - Added Lens.org algorithm to match local citations * Improved pajek export in biblioshiny * Computational speed improvements +* Solved issue with igraph 1.6.0 release canddate +* Solved issue with Matrix package bibliometrix v4.1.2 (Release date: 2023-03-06) diff --git a/R/Hindex.R b/R/Hindex.R index 75f630ed..a9673115 100644 --- a/R/Hindex.R +++ b/R/Hindex.R @@ -85,7 +85,7 @@ Hindex <- function(M, field="author", elements=NULL, sep = ";",years=Inf){ H <- df %>% group_by(.data$AUs) %>% - summarize(#Element = .data$AUs[1], + reframe(#Element = .data$AUs[1], h_index = h_calc(.data$TC), g_index = g_calc(.data$TC), PY_start = min(.data$PY), diff --git a/R/couplingMap.R b/R/couplingMap.R index 394a79c9..996747fa 100644 --- a/R/couplingMap.R +++ b/R/couplingMap.R @@ -22,7 +22,7 @@ #' @param impact.measure is a character. It indicates the impact measure used to rank cluster elements (documents, authors or sources). #' It can be \code{impact.measure = c("local", "global")}.\\ #' With \code{impact.measure = "local"}, \link{couplingMap} calculates elements impact using the Normalized Local Citation Score while -#' using code{impact.measure = "global"}, the function uses the Normalized Global Citation Score to measure elements impact. +#' using \code{impact.measure = "global"}, the function uses the Normalized Global Citation Score to measure elements impact. #' @param minfreq is a integer. It indicates the minimum frequency (per thousand) of a cluster. It is a number in the range (0,1000). #' @param community.repulsion is a real. It indicates the repulsion force among network communities. It is a real number between 0 and 1. Default is \code{community.repulsion = 0.1}. #' @param stemming is logical. If it is TRUE the word (from titles or abstracts) will be stemmed (using the Porter's algorithm). diff --git a/R/csvScopus2df.R b/R/csvScopus2df.R index 7e994f14..62224683 100644 --- a/R/csvScopus2df.R +++ b/R/csvScopus2df.R @@ -29,6 +29,10 @@ csvScopus2df <- function(file){ DATA$AU=gsub("\\.", "", DATA$AU) DATA$AU=gsub(",", ";", DATA$AU) + ### store raw affiliation format to extract link among authors and affiliations + DATA$C1raw <- DATA$C1 + ### + # Affiliation if (!("C1" %in% names(DATA))){DATA$C1 <- NA}else{ DATA$C1 <- unlist(lapply(strsplit(DATA$C1,";"), function(l){ diff --git a/R/histNetwork.R b/R/histNetwork.R index 5291702c..8881068a 100644 --- a/R/histNetwork.R +++ b/R/histNetwork.R @@ -324,7 +324,7 @@ scopus <- function(M, min.citations, sep, network, verbose){ dplyr::filter(.data$toRemove != TRUE) LCS <- CR %>% - group_by(SR_cited) %>% + group_by(.data$SR_cited) %>% count(name="LCS") @@ -353,7 +353,7 @@ scopus <- function(M, min.citations, sep, network, verbose){ CRadd <- data.frame(SR_citing=unique(M$SR), SR_cited=unique(M$SR), value=1) WLCR <- CR %>% - select(SR_citing, SR_cited) %>% + select(.data$SR_citing, .data$SR_cited) %>% mutate(value = 1) %>% bind_rows(CRadd) %>% distinct() %>% diff --git a/R/isi2df.R b/R/isi2df.R index 62735d5c..7d6fee71 100644 --- a/R/isi2df.R +++ b/R/isi2df.R @@ -64,6 +64,10 @@ Please, take a look at the vignettes: df <- cbind(df1,df2) rm(df1,df2) + ### store raw affiliation format to extract link among authors and affiliations + df$C1raw <- df$C1 + ### + df$DB <- "ISI" # Authors diff --git a/R/normalizeCItationScore.R b/R/normalizeCItationScore.R index e530309f..f76ac1ed 100644 --- a/R/normalizeCItationScore.R +++ b/R/normalizeCItationScore.R @@ -18,7 +18,7 @@ #' @param impact.measure is a character. It indicates the impact measure used to rank cluster elements (documents, authors or sources). #' It can be \code{impact.measure = c("local", "global")}.\\ #' With \code{impact.measure = "local"}, \link{normalizeCitationScore} calculates elements impact using the Normalized Local Citation Score while -#' using code{impact.measure = "global"}, the function uses the Normalized Global Citation Score to measure elements impact. +#' using \code{impact.measure = "global"}, the function uses the Normalized Global Citation Score to measure elements impact. #' @return a dataframe. #' #' diff --git a/R/zzz.R b/R/zzz.R index 756b947f..08e34530 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -25,6 +25,8 @@ ## @importFrom dplyr filter #' @importFrom dplyr arrange #' @importFrom dplyr do +#' @importFrom dplyr distinct +#' @importFrom dplyr join_by #' @importFrom dplyr n #' @importFrom dplyr slice #' @importFrom dplyr slice_max @@ -53,6 +55,7 @@ #' @importFrom dplyr relocate #' @importFrom dplyr slice_head #' @importFrom dplyr slice_tail +#' @importFrom dplyr reframe #' @importFrom plotly add_annotations #' @importFrom plotly add_lines #' @importFrom plotly config @@ -196,7 +199,6 @@ #' @importFrom Matrix format #' @importFrom Matrix formatSparseM #' @importFrom Matrix formatSpMatrix -#' @importFrom Matrix graph2T #' @importFrom Matrix head #' @importFrom Matrix image #' @importFrom Matrix invPerm @@ -250,7 +252,6 @@ #' @importFrom Matrix Summary #' @importFrom Matrix symmpart #' @importFrom Matrix t -#' @importFrom Matrix T2graph #' @importFrom Matrix tail #' @importFrom Matrix tcrossprod #' @importFrom Matrix tril diff --git a/README.md b/README.md index 442c828d..59239a7c 100644 --- a/README.md +++ b/README.md @@ -120,23 +120,23 @@ Load `bibliometrix` ``` r library('bibliometrix') -#> To cite bibliometrix in publications, please use: +#> Please note that our software is open source and available for use, distributed under the MIT license. +#> When it is used in a publication, we ask that authors properly cite the following reference: #> #> Aria, M. & Cuccurullo, C. (2017) bibliometrix: An R-tool for comprehensive science mapping analysis, -#> Journal of Informetrics, 11(4), pp 959-975, Elsevier. -#> -#> -#> https://www.bibliometrix.org +#> Journal of Informetrics, 11(4), pp 959-975, Elsevier. #> +#> Failure to properly cite the software is considered a violation of the license. #> #> For information and bug reports: +#> - Take a look at https://www.bibliometrix.org #> - Send an email to info@bibliometrix.org #> - Write a post on https://github.com/massimoaria/bibliometrix/issues #> -#> Help us to keep Bibliometrix free to download and use by contributing with a small donation to support our research team (https://bibliometrix.org/donate.html) +#> Help us to keep Bibliometrix and Biblioshiny free to download and use by contributing with a small donation to support our research team (https://bibliometrix.org/donate.html) #> #> -#> To start with the shiny web-interface, please digit: +#> To start with the Biblioshiny app, please digit: #> biblioshiny() ``` @@ -197,23 +197,22 @@ The argument *M* is a bibliographic data frame obtained by com <- missingData(M) com$mandatoryTags -#> tag description missing_counts missing_pct status -#> 1 AU Author 0 0.00 Excellent -#> 2 DT Document Type 0 0.00 Excellent -#> 3 SO Journal 0 0.00 Excellent -#> 4 LA Language 0 0.00 Excellent -#> 5 NR Number of Cited References 0 0.00 Excellent -#> 6 WC Science Categories 0 0.00 Excellent -#> 7 TI Title 0 0.00 Excellent -#> 8 TC Total Citation 0 0.00 Excellent -#> 9 CR Cited References 2 0.22 Good -#> 10 AB Abstract 7 0.78 Good -#> 11 PY Publication Year 9 1.00 Good -#> 12 RP Corresponding Author 10 1.11 Good -#> 13 C1 Affiliation 21 2.34 Good -#> 14 DI DOI 36 4.01 Good -#> 15 DE Keywords 79 8.80 Good -#> 16 ID Keywords Plus 97 10.80 Acceptable +#> tag description missing_counts missing_pct status +#> 1 AU Author 0 0.00 Excellent +#> 2 DT Document Type 0 0.00 Excellent +#> 3 SO Journal 0 0.00 Excellent +#> 4 LA Language 0 0.00 Excellent +#> 5 WC Science Categories 0 0.00 Excellent +#> 6 TI Title 0 0.00 Excellent +#> 7 TC Total Citation 0 0.00 Excellent +#> 8 CR Cited References 2 0.22 Good +#> 9 AB Abstract 7 0.78 Good +#> 10 PY Publication Year 9 1.00 Good +#> 11 RP Corresponding Author 10 1.11 Good +#> 12 C1 Affiliation 21 2.34 Good +#> 13 DI DOI 36 4.01 Good +#> 14 DE Keywords 79 8.80 Good +#> 15 ID Keywords Plus 97 10.80 Acceptable ``` **missingData** returns a list containing two data frame. The first one, diff --git a/inst/biblioshiny/libraries.R b/inst/biblioshiny/libraries.R index 03dccd10..b0b77bcd 100644 --- a/inst/biblioshiny/libraries.R +++ b/inst/biblioshiny/libraries.R @@ -20,6 +20,9 @@ libraries <- function(){ if (!require(RCurl, quietly=TRUE)){install.packages("RCurl")} if (!require(openxlsx, quietly=TRUE)){install.packages("openxlsx"); require(openxlsx, quietly=TRUE)} if (!require(shinyWidgets, quietly=TRUE)){install.packages("shinyWidgets"); require(shinyWidgets, quietly=TRUE)} + + ## Currently "webshot2" 0.1.1 generates empty screenshots on windows 10 for graphics created with visnetwork. + ## This workaround installs the previous version 0.1.0 to temporarily fix the problem. if (!require(webshot2,quietly=TRUE)){ install.packages("https://cran.r-project.org/src/contrib/Archive/webshot2/webshot2_0.1.0.tar.gz", repos = NULL, type = "source") }else{ @@ -30,11 +33,14 @@ libraries <- function(){ install.packages("https://cran.r-project.org/src/contrib/Archive/webshot2/webshot2_0.1.0.tar.gz", repos = NULL, type = "source") } } + ## + if (!(require(chromote, quietly=TRUE))){install.packages("chromote"); require(chromote, quietly=TRUE)} ### workaround for webshot2 on shinyapps.io if (!(require(curl, quietly=TRUE))){install.packages("curl"); require(curl, quietly=TRUE)} if (!(require(pagedown, quietly=TRUE))){install.packages("pagedown"); require(pagedown, quietly=TRUE)} + ## require(Matrix, quietly = TRUE) require(dimensionsR, quietly = TRUE) require(pubmedR, quietly = TRUE) diff --git a/inst/biblioshiny/server.R b/inst/biblioshiny/server.R index 7e224162..78fa43a4 100644 --- a/inst/biblioshiny/server.R +++ b/inst/biblioshiny/server.R @@ -30,7 +30,7 @@ server <- function(input, output,session){ HTML("Chrome or a Chromium-based browser is not installed on your computer.
If you do not have either of these browsers installed, Biblioshiny will be unable to export graphs.
To ensure the functionality of Biblioshiny, - please download Chrome by clicking here."), + please download Chrome by clicking here."), footer = modalButton("Dismiss"), easyClose = TRUE )) diff --git a/man/couplingMap.Rd b/man/couplingMap.Rd index 935c61df..f860347e 100644 --- a/man/couplingMap.Rd +++ b/man/couplingMap.Rd @@ -39,7 +39,7 @@ An n-gram is a contiguous sequence of n terms. The function can extract n-grams \item{impact.measure}{is a character. It indicates the impact measure used to rank cluster elements (documents, authors or sources). It can be \code{impact.measure = c("local", "global")}.\\ With \code{impact.measure = "local"}, \link{couplingMap} calculates elements impact using the Normalized Local Citation Score while -using code{impact.measure = "global"}, the function uses the Normalized Global Citation Score to measure elements impact.} +using \code{impact.measure = "global"}, the function uses the Normalized Global Citation Score to measure elements impact.} \item{minfreq}{is a integer. It indicates the minimum frequency (per thousand) of a cluster. It is a number in the range (0,1000).} diff --git a/man/figures/README-Co-Word Analysis-1.png b/man/figures/README-Co-Word Analysis-1.png index 30687321..3c3c6f2d 100644 Binary files a/man/figures/README-Co-Word Analysis-1.png and b/man/figures/README-Co-Word Analysis-1.png differ diff --git a/man/figures/README-Co-Word Analysis-2.png b/man/figures/README-Co-Word Analysis-2.png index 391b62e1..0d6045f4 100644 Binary files a/man/figures/README-Co-Word Analysis-2.png and b/man/figures/README-Co-Word Analysis-2.png differ diff --git a/man/figures/README-Co-citation network-1.png b/man/figures/README-Co-citation network-1.png index 2958d993..5966589d 100644 Binary files a/man/figures/README-Co-citation network-1.png and b/man/figures/README-Co-citation network-1.png differ diff --git a/man/figures/README-Country collaboration-1.png b/man/figures/README-Country collaboration-1.png index 2d29547f..0c24cf6c 100644 Binary files a/man/figures/README-Country collaboration-1.png and b/man/figures/README-Country collaboration-1.png differ diff --git a/man/figures/README-Historical Co-citation network-1.png b/man/figures/README-Historical Co-citation network-1.png index b13bbaa0..8bf2d952 100644 Binary files a/man/figures/README-Historical Co-citation network-1.png and b/man/figures/README-Historical Co-citation network-1.png differ diff --git a/man/figures/README-Keyword c-occurrences-1.png b/man/figures/README-Keyword c-occurrences-1.png index dfcd8ffb..b6511f86 100644 Binary files a/man/figures/README-Keyword c-occurrences-1.png and b/man/figures/README-Keyword c-occurrences-1.png differ diff --git a/man/normalizeCitationScore.Rd b/man/normalizeCitationScore.Rd index 97644429..4d0a4735 100644 --- a/man/normalizeCitationScore.Rd +++ b/man/normalizeCitationScore.Rd @@ -14,7 +14,7 @@ normalizeCitationScore(M, field = "documents", impact.measure = "local") \item{impact.measure}{is a character. It indicates the impact measure used to rank cluster elements (documents, authors or sources). It can be \code{impact.measure = c("local", "global")}.\\ With \code{impact.measure = "local"}, \link{normalizeCitationScore} calculates elements impact using the Normalized Local Citation Score while -using code{impact.measure = "global"}, the function uses the Normalized Global Citation Score to measure elements impact.} +using \code{impact.measure = "global"}, the function uses the Normalized Global Citation Score to measure elements impact.} } \value{ a dataframe.