Sourcing R script по HTTPS
Есть ли какой-то способ извлечения из R w370 > ?
например. source('http://github.com/project/R/file.r')
Причина: В настоящее время у меня есть проект, который я хотел бы сделать доступным для использования, но еще не готов к пакету. Поэтому было бы здорово предоставить людям один файл для источника из Интернета (который затем будет загружать все отдельные файлы функций).
При ближайшем рассмотрении проблема кажется https. Как я могу загрузить этот файл?
https://raw.github.com/hadley/stringr/master/R/c.r
Ответы
Ответ 1
Да, вы можете попробовать запустить этот учебник R:
source("http://www.mayin.org/ajayshah/KB/R/tutorial.R")
(Источник)
Https поддерживается только в Windows, когда R запускается с опцией командной строки --internet2
(см. FAQ):
> source("https://pastebin.com/raw.php?i=zdBYP5Ft")
> test()
[1] "passed"
Без этой опции или в linux вы получите сообщение об ошибке "неподдерживаемая схема URL". В этом случае прибегните к решению, предложенному @ulidtko, или:
Вот как это сделать, используя RCurl
, который также поддерживает https:
library(RCurl)
eval( expr =
parse( text = getURL("http://www.mayin.org/ajayshah/KB/R/tutorial.R",
ssl.verifypeer=FALSE) ))
(Вы можете удалить ssl.verifypeer
, если сертификат ssl действителен)
Ответ 2
Вы можете использовать source_url в библиотеке devtools
library(devtools)
source_url('https://raw.github.com/hadley/stringr/master/R/c.r')
Это оболочка для RCURL-метода @ROLO
Ответ 3
Да, это возможно и сработало для меня сразу.
R> source("http://pastebin.com/raw.php?i=zdBYP5Ft")
R> test()
[1] "passed"
Что касается части HTTPS, она не поддерживается внутренним R-кодом. Тем не менее, R может использовать внешние утилиты, такие как wget
или curl
для извлечения https://URL-адресов. Нужно написать дополнительный код, чтобы иметь возможность source
файлов.
Пример кода может выглядеть следующим образом:
wget.and.source <- function(url) {
fname <- tempfile()
download.file(url, fname, method="wget")
source(fname)
unlink(fname)
}
Также есть решение для Windows: запустите R с опцией командной строки --internet2
. Это переключит весь интернет-код в R на использование IE, и, следовательно, HTTPS будет работать.
Ответ 4
Окна:
Если Internet Explorer настроен для доступа к сети с использованием прокси-сервера организации, вы можете перенаправить R, чтобы использовать эти настройки IE вместо стандартных настроек R. Это изменение можно сделать одним из следующих шагов:
Откройте этот файл "Rprofile.site" в "Блокноте" и добавьте следующую строку в новую строку в конце файла:
utils::setInternet2(TRUE)
Теперь вы можете открыть новый сеанс R и повторить попытку команды "source".
Linux alikes:
Используйте предложение Г. Гротендика. В командной строке внутри R-типа:
source(pipe(paste("wget -O -", "https://github.com/enter/your/url/here.r")))
Вы можете получить сообщение об ошибке:
cannot verify certificate - - - - Self-signed certificate encountered.
В этот момент вам решать, доверять ли вы лицу, выдающему самозаверяющий сертификат, и продолжить или остановить.
Если вы решите продолжить, вы можете подключиться небезопасно следующим образом:
source(pipe(paste("wget -O -", "https://github.com/enter/your/url.r", "--no-check-certificate")))
Подробнее см. в следующем:
См. раздел 2.19
Похожие вопросы здесь:
Ответ 5
Методы здесь дали мне следующую ошибку из github:
OpenSSL: error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)
Я использовал следующую функцию для ее устранения:
github.download = function(url) {
fname <- tempfile()
system(sprintf("curl -3 %s > %s", url, fname))
return(fname)
}
source(github.download('http://github.com/project/R/file.r'))
Надеюсь, что это поможет!