Я новичок в R и пытаюсь получить доступ к некоторой информации в Интернете, но у меня проблемы с подключениями, которые, похоже, не закрываются. Я был бы очень признателен, если бы кто-нибудь здесь дал мне совет ...
Первоначально я хотел использовать пакет WebChem, который теоретически предоставляет все, что я хочу, но когда некоторые выходные данные отсутствуют на веб-странице, WebChem не возвращает никаких данных с этой страницы. Чтобы обойти это, я взял большую часть кода из пакета, но немного изменил его в соответствии со своими потребностями. Это работало нормально примерно в течение первых 150 использований, но теперь, хотя я ничего не изменил, когда я использую команду read_html, я получаю предупреждающее сообщение "закрытие неиспользуемого соединения 4 (http: ....." Хотя это только предупреждающее сообщение, read_html ничего не возвращает после создания этого предупреждения.
Я написал упрощенный код, приведенный ниже. Это та же проблема
Полное закрытие R (или даже перезагрузка моего ПК), похоже, не имеет значения - теперь предупреждающее сообщение появляется при втором использовании кода. Я могу запускать запросы по одному вне цикла без проблем, но как только я пытаюсь использовать цикл, ошибка возникает снова на второй итерации. Я попытался векторизовать код, и снова он вернул то же сообщение об ошибке. Я пробовал showConnections (all = TRUE), но получил соединения 0-2 только для stdin, stdout, stderr. Я попытался найти способы закрыть html-соединение, но я не могу определить URL-адрес как con, а close (qurl) и close (ttt) также не работают. (Возврат ошибок, связанных с отсутствием применимого метода для 'close', примененного к объекту класса "символ, и отсутствия применимого метода для 'close', применяемого к объекту класса" c ('xml_document', 'xml_node') ", соответственно)
Кто-нибудь знает, как закрыть эти связи, чтобы они не нарушили мой распорядок? Любые предложения будут очень приветствоваться. Спасибо!
PS: Я использую R версии 3.3.0 с RStudio версии 0.99.902.
CasNrs <- c("630-08-0","463-49-0","194-59-2","86-74-8","148-79-8")
tit = character()
for (i in 1:length(CasNrs)){
CurrCasNr <- as.character(CasNrs[i])
baseurl <- 'http://chem.sis.nlm.nih.gov/chemidplus/rn/'
qurl <- paste0(baseurl, CurrCasNr, '?DT_START_ROW=0&DT_ROWS_PER_PAGE=50')
ttt <- try(read_html(qurl), silent = TRUE)
tit[i] <- xml_text(xml_find_all(ttt, "//head/title"))
}
lapply
и%>%
для дальнейшего упрощения вашей структуры, хотя я сомневаюсь, что это повлияет на предупреждение. - person alistaire   schedule 15.06.2016curl
? Согласно?read_html
, он будет использоватьcurl()
, если он установлен, иначеurl()
соединение. Оба должны работать, правда, но попробовать стоит. - person alistaire   schedule 15.06.2016