rm(list = ls())
###############################input data
# Install and load required packages
if (!requireNamespace("rcrossref", quietly = TRUE)) install.packages("rcrossref")
if (!requireNamespace("rentrez", quietly = TRUE)) install.packages("rentrez")
library(rcrossref)
## Warning: package 'rcrossref' was built under R version 4.4.1
library(rentrez)
# Function to search article info by title
search_article_info <- function(title) {
# Search for DOI and journal info
cr_result <- cr_works(query = title, limit = 1)
# Search for PubMed ID
pm_result <- entrez_search(db = "pubmed", term = title, retmax = 1)
# Extract information
doi <- if (length(cr_result$data) > 0 && !is.null(cr_result$data$doi)) {
paste0("https://doi.org/", cr_result$data$doi)
} else {
NA_character_
}
pubmed_url <- if (length(pm_result$ids) > 0) {
paste0("https://pubmed.ncbi.nlm.nih.gov/", pm_result$ids[1], "/")
} else {
NA_character_
}
journal_abbrev <- if (length(cr_result$data) > 0 && !is.null(cr_result$data$container.title)) {
cr_result$data$container.title
} else {
NA_character_
}
# Create a dataframe
result_df <- data.frame(
Title = title,
DOI_URL = doi,
PubMed_URL = pubmed_url,
Journal_Abbrev = journal_abbrev,
stringsAsFactors = FALSE
)
return(result_df)
}
# Function to search multiple titles
search_multiple_articles <- function(titles) {
results <- lapply(titles, search_article_info)
do.call(rbind, results)
}
###############################input data
dir_path <- "C:\\Users\\xut2\\Desktop\\ref\\"
dir_path_name <- dir(dir_path,pattern = "*.",full.names = T, recursive =T)
library(openxlsx)
getSheetNames(grep("ref.xlsx", dir_path_name,value = T))
## [1] "Sheet1"
data_1 <- read.xlsx(grep("ref.xlsx", dir_path_name,value = T), sheet = 1)
dim(data_1) #[1] 52 2
## [1] 51 11
head(data_1, 2)
## no content
## 1 1 Patton K, Borshoff D
## 2 2 Funk C, Roth A
## X3
## 1 Adverse drug reactions
## 2 Current limitations and future opportunities for prediction of DILI from in vitro
## X4 X5 X6 X7 X8 X9 X10 X11
## 1 Anaesthesia 2018;73:76-84 <NA> <NA> <NA> <NA> NA NA
## 2 Archives of toxicology 2017;91(1):131-142 <NA> <NA> <NA> <NA> NA NA
# Extract titles
result_df <- search_multiple_articles(data_1$X3)
## Warning: Unknown or uninitialised column: `container.title`.
## Warning: Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
#View(result_df)
head(result_df)
## Title
## 1 Adverse drug reactions
## 2 Current limitations and future opportunities for prediction of DILI from in vitro
## 3 Dronedarone in high-risk permanent atrial fibrillation
## 4 Drug-induced liver injury
## 5 Drug-induced mitochondrial dysfunction and cardiotoxicity
## 6 Animal models of drug-induced liver injury
## DOI_URL
## 1 https://doi.org/10.5005/jp/books/12120_2
## 2 https://doi.org/10.1007/s00204-016-1874-9
## 3 https://doi.org/10.1016/s0019-4832(12)60031-5
## 4 https://doi.org/10.1093/med/9780198759928.003.0058
## 5 https://doi.org/10.1002/9780470372531.fmatter
## 6 https://doi.org/10.1016/j.dmpk.2020.04.284
## PubMed_URL
## 1 https://pubmed.ncbi.nlm.nih.gov/39230883/
## 2 https://pubmed.ncbi.nlm.nih.gov/27766365/
## 3 https://pubmed.ncbi.nlm.nih.gov/38227804/
## 4 https://pubmed.ncbi.nlm.nih.gov/39228306/
## 5 https://pubmed.ncbi.nlm.nih.gov/39127172/
## 6 https://pubmed.ncbi.nlm.nih.gov/39228306/
## Journal_Abbrev
## 1 Ready Reckoner of Adverse Drug Reactions
## 2 Archives of Toxicology
## 3 Indian Heart Journal
## 4 Oxford Medicine Online
## 5 DrugāInduced Mitochondrial Dysfunction
## 6 Drug Metabolism and Pharmacokinetics
# Optionally, write to CSV
write.csv(result_df, paste0(dir_path,Sys.Date(),"-","title_doi_pubmed.csv"),row.names = FALSE,na = "")