2016-04-28 4 views
0

Я пытаюсь создать пакеты R локально просто для стандартизации моего кода для моей собственной выгоды. Я не собираюсь публиковать сообщения на CRAN или GitHub. Я бы хотел, чтобы импортировать пакеты, которые я уже разработал, в новый пакет, который я разрабатываю.devtools :: install(): установка пакета R, который импортирует другой пакет, который хранится локально.

Например:

  • вызов первый пакет pack_a и второй пакет pack_b.
  • pack_a не имеет обязательств и устанавливает какие-либо проблемы.
  • pack_b зависит от pack_a так pack_a упоминается в описании файла pack_b под тэгом импорт.

Проблема я столкнулся в том, что при установке pack_b (используя devtools::install()) следующее сообщение об ошибке появляется:

Skipping 1 unavailable package: pack_a 

После просматривал code of devtools on GitHub кажется, что он смотрит на CRAN для требуемые пакеты с использованием available.packages(). Конечно, мой pack_a не на CRAN поэтому не может найти его, а затем pack_b не удается установить. Я надеялся, что сначала будет проверять, установлена ​​ли pack_a в моей библиотеке по умолчанию и поэтому даже не пытайтесь ее переустановить.

Так что мой вопрос сводится к:

Как указать, где найти pack_a на моем локальном диске при установке pack_b? И если это невозможно, есть ли переключатель для отключения установки необходимых пакетов во время установки?

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

Предыдущий подобный вопрос: R package which imports SparkR (not on CRAN)

Любое руководство будет высоко ценится.

+0

Если вы хотите использовать 'repos' ARG в локальный каталог, необходимо создать ожидаемую структуру dir, пакет [drat] (https://github.com/eddelbuettel/drat) поможет вам в этом. – jangorecki

+0

Можете ли вы воспроизвести проблему, используя 'utils :: install.packages'? – jangorecki

+0

@jangorecki, спасибо за указатель на drat. Это будет полезно для будущего. Оказывается, моя проблема не имеет ничего общего с зависимостями, но на самом деле это потому, что у меня был файл с тем же именем, что и мой пакет, сохраненный в моей библиотеке (не знаю, как он туда попал ...), так что чувствуешь себя глупым, чтобы задать вопрос теперь ... – Yabasa

ответ

0

Я не совсем уверен, почему у вас есть эта проблема без каких-либо подробностей, поскольку я точно так же, как вы описываете для своих собственных пакетов (оба тоже не на CRAN) и не имеют проблем.

Сказав это, простое решение, если вы точно знаете, что pack_a установлен перед тем установки pack_b является запуск:

devtools::install(dependencies = FALSE) 
+0

Спасибо за ответ. Если на самом деле причина, по которой она терпела неудачу, была проблемой зависимости, это был бы правильный ответ, поэтому я соглашусь с этим. На самом деле я ошибочно приписывал это предупреждение как причину, по которой он не смог установить. Это было фактически неудачно, потому что у меня был файл в моей библиотеке с тем же именем, что и мой пакет, поэтому он не мог создать новый каталог с тем же именем. Я должен был сделать больше исследований, прежде чем задавать вопрос, но в любом случае спасибо, хорошо знать это для будущей ссылки. – Yabasa

 Смежные вопросы

  • Нет связанных вопросов^_^