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

289

Друг послал меня по этому замечательному учебнику по webcraping NYtimes с R. Мне бы очень хотелось попробовать это. Однако первым шагом является установка пакета из RJSONIO из источника.

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

Я запускаю Mac OSX.

Теги:
package
install
r-faq

7 ответов

363

Если у вас есть файл локально, используйте 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"
Показать ещё 6 комментариев
66

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

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

Обратите внимание, что это будет выполнено только тогда, когда: a) пакет не нуждается в компиляции или b) присутствуют необходимые системные инструменты для компиляции. См.: 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 ).
Показать ещё 2 комментария
44

Вы можете установить непосредственно из репозитория (обратите внимание на 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-код, вам понадобится компилятор для его установки из исходного кода.
Показать ещё 2 комментария
14

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

Во-первых, если вы вызываете "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")

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

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

Ссылка: doc devtools

6

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

R CMD build --binary RJSONIO_0.2-3.tar.gz
  • 20
    R CMD build --binary устарела; вместо этого используйте R CMD INSTALL --build
4

Из cran вы можете установить непосредственно из адреса репозитория github. Поэтому, если вы хотите пакет в https://github.com/twitter/AnomalyDetection:

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

делает трюк.

-3

Я предпочитаю устанавливать пакет из R cran project. Я буду искать имя пакета, и если он будет доступен, я буду выполнять команду из моей оболочки R, чтобы установить ее непосредственно из проекта R-крана. Ваш пакет доступен в каталоге R. Так вот что я буду делать

install.packages("RJSONIO")

Бонус - Загрузка пакета в текущую сессию R

library(RJSONIO)
  • 1
    Я думаю, что это ответ, любой пакет может быть загружен с использованием имени пакета. Поскольку в ОП вопроса четко указано имя пакета, запуск install.packages ("RJSONIO") приведет к тому, что R разрешит имя пакета по адресу cran.r-project.org/web/packages/RJSONIO/index.html и, таким образом, загрузит Это.
  • 0
    Это строго неверно, поскольку частные пакеты не находятся в общедоступных репозиториях, и вам, возможно, придется установить их непосредственно из исходного кода. Кроме того, если вам нужно отладить или изменить пакет, вы не можете установить версию из репозитория.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню