Как настроить сборку пакетов RStudio для работы на нескольких компьютерах
этот вопрос был задан другим пользователем на странице справки RStudio здесь но остался без ответа.
в принципе, я прошел все шаги:
(1) Установлен Xcode
(2) загруженные и установленные средства командной строки
(3) Установлен MacTex
(4) выбран каталог, содержащий пакет R с сопровождающим его файлом описания.
этот пакет скомпилирован просто отлично на Mac I сначала его построили. Теперь, однако, мне говорят, что RStudio не может обнаружить файл описания, хотя он находится прямо в каталоге сборки. Я приложил скриншот.
сообщение об ошибке я получаю это:
ERROR: The build directory does not contain a DESCRIPTION file so cannot be built as a package.
кто-нибудь знает чего мне не хватает? Я приложил скриншот для справки. Полное раскрытие информации: это работа для коммерческого применения.
4 ответов
Ниже приведен план того, как я подошел к этому для пакета, который мы будем называть mypack
.
обновить R и Rstudio
это должно быть первое, что вы делаете. Обновите все...
создать скелет пакет
использовать roxygen2
пакет для создания mypack
пакет скелет. Из вашей IDE попробуйте следующее:
library(roxygen2)
package.skeleton('mypack')
посмотреть http://cran.r-project.org/web/packages/roxygen2/roxygen2.pdf дополнительные подробности.
изменить описание файла
отредактируйте файл описания с помощью считывателя, который позволяет мне видеть непечатаемые символы. Стоит проверить, нет ли в вашем файле каких-либо нечетных символов. RStudio-хороший редактор для использования.
сравните содержимое файла описания с чужими репозиториями github,на plyr
описание файла.
кроме того, есть вопросы здесь С ответом, который объясняет, как используется файл описания.
сборка пакета
Я использую скрипт (ниже) для создания пакета из Rstudio, а не с помощью консервированных опций Rstudio. Мне не нравится не забывать переключаться между обычной IDE и каким-то проектом.
вам понадобится [devtools][3]
установлен, чтобы сделать эту работу.
setwd('~/Documents/projects/Rcode')
# remove the old version
try(detach(name = "package:mypack",unload = TRUE))
# load the packages we need for building / documentation
library("roxygen2") # could use "require"
# generate documentation
roxygenize(package.dir = "mypack")
# now we actually build and install the package
system("R CMD build mypack")
system("R CMD INSTALL --preclean mypack_1.00.tar.gz")
system("R CMD check mypack")
# check for old documentation
try(file.remove(file.path(getwd(),"mypack.pdf")))
# generate new documentation
system("R CMD Rd2pdf mypack")
# and finally, make it available.
library("mypack")
отказ от ответственности: я полностью осознаю что я могу иметь некоторые из вышеперечисленных в неправильном порядке или делать что-то глупое. Я просто не уверен, что именно, и это работает в данный момент.
создание пакета документации
у меня есть R-markdown в заголовках всех моих функций, поэтому файлы справки создаются как ./man/*.Rd
(где *
- это имя функции) автоматически, когда я выполнить этот скрипт. Опять же, взгляните на plyr github, чтобы почувствовать это.
Я также написал виньетку для этого пакет. Это .Rnw файл, который можно редактировать в RStudio или любом другом текстовом редакторе. Этот.Файл Rnw в основном latex со встроенными кусками knitr. Редактор Rstudio имеет возможность скомпилировать это независимо от самого пакета. Это кажется отличным решением, и вышеупомянутый скрипт перекомпилирует виньетки всякий раз, когда я обновляю свой код, что является хорошей проверкой на все.
кросс-платформенная установка
Я знаю, что этот скрипт работает на нескольких компьютерах Mac, но никогда не имел несчастья использовать машину windows для компиляции. Однако мой коллега использует скомпилированный пакет в windows без каких-либо проблем.
ресурсы
полезные ресурсы для этого есть:
- руководство Хэдли по созданию пакетов и документации по функциям в http://r-pkgs.had.co.nz/,
- R-блоггеры (например http://www.r-bloggers.com/r-package-building-automation/)
- Stackoverflow.
Я только что столкнулся с такой ошибкой (за исключением того, что я ранее смог создать пакет без инцидентов).
оказывается, моя ошибка была вызвана плохо сформированным файлом описания. Исправление синтаксиса там позволило моему пакету построить.
недавно у меня была точно такая же проблема - мой пакет не будет компилироваться под RStudio с ошибкой, говорящей, что каталог пакета не содержит файл описания. Я решил проблему, изменив кодировку файла описания на ANSI.