Сценарий Sourcing R поверх HTTPS
Есть ли способ запустить R-скрипт из Интернета?
например source('http://github.com/project/R/file.r')
Причина: В настоящее время у меня есть проект, который я хотел бы сделать доступным для использования, но пока не готов к пакету. Поэтому было бы здорово предоставить людям один файл для источника из Интернета (который затем будет загружать все отдельные файлы функций).
- Скомпилировать R-скрипт в автономный .exe-файл?
- R Ошибка в операторе x $ ed: $ недействительна для атомных векторов
- Сплит-кадр данных по уровням фактора и именных кадров данных по этим уровням
- обнаружена ошибка segfault в R
- Для каждой строки возвращаем имя столбца наибольшего значения
При ближайшем рассмотрении проблема, похоже, https. Как я могу загрузить этот файл?
https://raw.github.com/hadley/stringr/master/R/cr
- Создание системы Prompt / Answer для ввода данных в R
- Найдите, сколько раз повторяющиеся строки повторяются в кадре данных R
- Перечислить списки в R
- Как изменить языковые настройки в R
- Существует pmin и pmax, каждый из которых принимает na.rm, почему нет psum?
- Как вы читаете в нескольких файлах .txt в R?
- Замените все значения 0 на NA
- Добавление текста в таблицу grid.table
Да, вы можете попробовать запустить этот учебник R:
source("http://www.mayin.org/ajayshah/KB/R/tutorial.R")
( Источник )
Https поддерживается только в Windows, когда R запускается с --internet2
командной строки --internet2
(см. Часто задаваемые вопросы ):
> 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 действителен)
Вы можете использовать source_url в библиотеке devtools
library(devtools) source_url('https://raw.github.com/hadley/stringr/master/R/c.r')
Это shell для метода RCurl by @ROLO
Да, это возможно и сработало для меня сразу.
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
командной строки --internet2
. Это переключит весь интернет-код в R на IE, и, следовательно, HTTPS будет работать.
Окна:
Если Internet Explorer настроен для доступа к сети с использованием прокси-сервера вашей организации, вы можете направить R, чтобы использовать эти настройки IE вместо стандартных настроек R. Это изменение можно сделать одним из следующих шагов:
- Сохраните свою работу и закройте все сеансы R, которые могут быть открыты.
-
Отредактируйте следующий файл. (Примечание. Ваш точный путь будет отличаться в зависимости от вашей установки R)
C: \ Program Files \ R \ R-2.15.2 \ etc \ Rprofile.site
Откройте этот файл «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
- Документация CRAN R 2.19
- wget раздел 2.8 для “no-check-certificate”
Похожие вопросы здесь:
- Stackoverflow setInternet2 обсуждение
- Обсуждение конфигурации прокси-сервера Stackoverflow
Методы здесь приводили мне следующую ошибку из 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'))
Надеюсь, это поможет!
Это работает для меня в windowsх:
library(RCurl) # load functions and scripts from github ---------------------------- fn1 <- getURL("https://raw.githubusercontent.com/SanjitNarwekar/Advanced-R-Programming/master/fn_factorial_loop.R", ssl.verifypeer = FALSE) eval(parse(text = fn1))