Да, либо копия CRAN, либо репо с локальными пакетами легко настраивается. Предположительно вы хотите это для Windows, так это сделать:
- Создайте директорию верхнего уровня на вашем веб-сервере, скажем
R/
- Создать обычную иерархию там:
R/bin/windows/contrib/2.11
. Если вам нужно поддерживать другие (более ранние) версии, просто создайте каталоги 2.10
, 2.9
, ... рядом с каталогом 2.11
.
Поместите пакеты, которые нужно в директорию (скажем, 2.11
), затем перейдите в этот каталог и выполните следующую команду, чтобы создать PACKAGES
и PACKAGES.gz
файлов для репозитория:
tools::write_PACKAGES(".", type="win.binary")
Это все, что вам нужно - теперь вы можете получить доступ к репозиторию, указав адрес, такой как
update.packages(repos="http://my.local.server/R", ask=FALSE)
, который я даже делаю в R/zzz.R
для локальных пакетов, чтобы они обновлялись.
Редактировать некоторые пять + лет спустя: И drat пакет Теперь автоматизирует многое из этого, и светит особенно, если вы используете GitHub, чтобы служить хранилищем над HTTP/HTTPS (но полезно для других или локального хостинга тоже) ,
Автоматическое обновление звуков очень удобно, но я не понимаю, куда поместить команду обновления. Я играю с 'zzz.R' и' .onLoad', но не могу заставить его передать «R CMD check ...». В некотором роде, кажется немного странным, чтобы обновить то, что вы в настоящее время загружаете. – Backlin
Команда update может быть введена в R любым, кто может попасть в репозиторий. –
В дополнение к комментариям Дирка, если вы хотите, чтобы пользователи пакета редактировали свои файлы Rprofile.site (которые запускались при запуске каждого сеанса R), чтобы включить что-то вроде 'options (repos = c (getOption (« repos ») MyCompanyRepo = "http: //my.local.server/R")) ', тогда ваши пользователи могут делать такие вещи, как' install.packages («mypackage») ', не указывая на путь. –