Как установить пакет R из исходного кода?


392

Друг прислал мне это великолепное руководство по веб-сёрфингу NYtimes с R . Я бы очень хотел попробовать это. Тем не менее, первым шагом является установка пакета с именем RJSONIO из исходного кода.

Я достаточно хорошо знаю R, но понятия не имею, как установить пакет из исходного кода.

Я использую Mac OSX.


1
Это очень тесно связано: stackoverflow.com/questions/11105131/…
GSee

Ответы:


487

Если у вас есть файл локально, используйте install.packages()и установите repos=NULL:

install.packages(path_to_file, repos = NULL, type="source")

Где path_to_fileбудет отображаться полный путь и имя файла:

  • В Windows это будет выглядеть примерно так: "C:\\RJSONIO_0.2-3.tar.gz".
  • В UNIX это будет выглядеть следующим образом : "/home/blah/RJSONIO_0.2-3.tar.gz".

2
Это также работает, если file_name_and_pathэто локальный исходный репозиторий пакета R.
Фахим Митха

1
Обратите внимание, что этот INSTALL_optsпараметр можно использовать для передачи параметров R CMD INSTALL. Например, "--no-multiarch"
Энди Барбур

2
install.packages ("/ tmp /iny_0.13.1.tar.gz", repos = NULL, type = "source") я получаю эту ошибку: -ksh: синтаксическая ошибка: `('неожиданно
iaav

3
Как отметил @Cerin, вы должны позаботиться о расширении. У меня была ошибка "(поскольку 'lib' не указана)" из R с архивами .zip. Все работает нормально после смены расширения на .tar.
Мохамед Хасан

2
Стоит отметить, что, поскольку repos = NULLэтот подход не будет устанавливать зависимости, например, от CRAN. этот ответ предполагает, devtools::install_local(path_to_file)что для меня проще (меньше аргументов для предоставления) и лучше (также устанавливает зависимости).
Mac

97

Загрузите исходный пакет, откройте Terminal.app, перейдите в каталог, где у вас есть файл, и затем выполните:

R CMD INSTALL RJSONIO_0.2-3.tar.gz

Обратите внимание, что это будет успешно выполнено только в том случае, если: а) пакет не нуждается в компиляции или б) имеются необходимые системные инструменты для компиляции. Смотрите: https://cran.r-project.org/bin/macosx/tools/


3
Я попробовал это и получил ошибку: Madjoro-MacBook-Pro: ~ Madjoro $ R CMD INSTALL RJSONIO_0.2-3.tar.gz Предупреждение: неверный пакет 'RJSONIO_0.2-3.tar.gz' Ошибка: ОШИБКА: нет пакетов указано

1
Вы должны указать правильный путь к файлу .tar.gz, и требуются инструменты XCode ( developer.apple.com/TOOLS/Xcode ).
RCS

1
Есть ли способ собрать бинарный .zip из исходного кода?
haridsv

5
Найдя решение, вам нужно использовать опцию --binary.
haridsv

Сколько раз вы приходили сюда, потому что набрали install вместо INSTALL?
Брэндон Бертельсен

50

Вы можете установить непосредственно из хранилища (обратите внимание на type="source"):

install.packages("RJSONIO", repos = "http://www.omegahat.org/R", type="source")

3
Я попробовал это и получил ошибку: * Установка исходного пакета 'RJSONIO' ... ** libs ** arch - i386 sh: make: команда не найдена ОШИБКА: сбой компиляции для пакета 'RJSONIO' RMate остановлен на строке 3 * Удаление ' /Library/Frameworks/R.framework/Versions/2.9/Resources/library/RJSONIO 'Загруженные пакеты находятся в' / private / var / folder / Ey / EyzhYjoKESmsmsZ6K87PeU +++ TI / -Tmp- / Rtmpe3C96p /loaded_packages 'Обновление HTML индекс пакетов в '.Library' Предупреждение: в install.packages ("RJSONIO", repos = " omegahat.org/R " ,: установка пакета 'RJSONIO' имеет ненулевой статус выхода

6
У вас установлены инструменты разработчика? Они входят в установочный DVD Mac OS X. Поскольку этот пакет имеет C-код, вам понадобится компилятор для его установки из исходного кода.
Эдуардо Леони

1
Я подозреваю, что у меня не установлены инструменты разработчика. По крайней мере, я не помню, чтобы установить их. Спасибо!

4
Если вы делаете это в Windows, вы можете получить инструменты разработчика с murdoch-sutherland.com/Rtools ... убедитесь, что при установке вы отметили флажок для обновления вашего пути (может быть немного трудно читать ... только что поставил галочку в окошке)
Дэн Голдштейн,

27

Дополнительный удобный (но тривиальный) совет для установки старых версий пакетов из исходного кода.

Во-первых, если вы вызываете «install.packages», он всегда устанавливает последний пакет из репозитория. Если вы хотите установить более старую версию пакетов, скажем, для совместимости, вы можете вызвать install.packages ("url_to_source", repo = NULL, type = "source"). Например:

install.packages("http://cran.r-project.org/src/contrib/Archive/RNetLogo/RNetLogo_0.9-6.tar.gz", repo=NULL, type="source")

Без ручной загрузки пакетов на локальный диск и переключения на командную строку или установки с локального диска я обнаружил, что это очень удобно и упрощает вызов (за один шаг).

Плюс: вы можете использовать этот трюк с dev_mode библиотеки devtools для управления различными версиями пакетов:

Ссылка: док devtools


9

С помощью крана вы можете установить напрямую с адреса хранилища GitHub . Так что если вы хотите пакет по адресу https://github.com/twitter/AnomalyDetection:

library(devtools)
install_github("twitter/AnomalyDetection")

делает трюк.


8

Кроме того, вы можете собрать двоичный пакет, используя опцию --binary.

R CMD build --binary RJSONIO_0.2-3.tar.gz

21
R CMD build --binaryустарел; используйте R CMD INSTALL --buildвместо этого
f3lix
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.