Я работал над приложением для удаления веб-страниц, чтобы собрать некоторую информацию из JSTOR. Приложение работает нормально локально, но не работает при развертывании на shinyapp.io.
Идея проста, приложение загружает html страниц (например: https://www.jstor.org/action/doBasicSearch?Query=example&acc=off&wc=on&fc=off&group=none) и прочтите список сбоку, где можно найти информацию о количестве совпадений для каждой дисциплины.
webpage <- read_html(filePath)
hits_html <- html_nodes(webpage, 'li')
hits <- html_text(hits_html)
Чтобы создать фрейм данных, приложение использует список дисциплин, чтобы выбрать частичное совпадение текстовая информация с веб-страницы. Это создает индекс выбранной дисциплины в списке дисциплин веб-страницы следующим образом:
disciplines <- list("\r\n African American Studies",
"\r\n African Studies",
"\r\n Agriculture",
"\r\n American Studies",
"\r\n Anthropology",
"etc...")
index <- pmatch(disciplines[[i]], hits)
string <- hits[index]
Строка с выбранной дисциплиной преобразуется в число c следующим образом:
begin<-regexpr("\\(", string)
end<-regexpr("\\)", string)
k<-substring(string, begin+1, end-1)
k<-sub(",", "", k)
k<-as.numeric(k)
Это отлично работает локально, но не работает на shinyapps.io. После нескольких тестов я заметил, что проблема связана с функцией pmatch (или с любым сопоставлением, которое я пробовал). Функции сопоставления возвращают NA при использовании в shinyapps.io, хотя локально они работают нормально. Я уже пробовал некоторые из следующих альтернатив:
index <- pmatch(disciplines[[t]], as.list(hits)) # DOES NOT WORK ON SHINYAPPS.IO
index <- pmatch(disciplines[[t]], hits) # DOES NOT WORK ON SHINYAPPS.IO
index <- which(stringr::str_detect(hits, disciplines[[t]]))[[1]] # DOES NOT WORK ON SHINYAPPS.IO
index <- sjmisc::str_find(hits, disciplines[[t]])[[1]] # DOES NOT WORK ON SHINYAPPS.IO
Кто-нибудь когда-нибудь сталкивался с подобной проблемой?