При разработке пакета R нужно ли перекомпилировать пакет каждый раз, когда я делаю изменения? - PullRequest
8 голосов
/ 30 октября 2010

Я разрабатываю пакет в R

Когда я отлаживаю определенную функцию или набор функций, каков наилучший способ проверить функцию?

Нужно ли мне использовать источник ('function.R') или R CMD build каждый раз, когда я хочу проверить свои изменения?

(дополнительный кредит для связанных привязок клавиш emacs ess)

Ответы [ 4 ]

8 голосов
/ 31 октября 2010

См. Также http://github.com/hadley/devtools/, который предоставляет некоторые инструменты для облегчения этой задачи.

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

library(devtools)
install("package_name")

devtools также облегчает:

  • Перезагрузить полный пакет:

    load_all("pkg")
    
  • Создание или обновление документации с использованием roxygen2

    document("pkg")
    
  • запустить все скрипты в /inst/test/:

    test("pkg")
    
  • сборка и проверка CMD:

    check("pkg")
    
6 голосов
/ 30 октября 2010

Взгляните на ?insertSource, которая является новой функцией в R 2.12.0, а также другие функции в разделе См. Также на этой странице справки.Также проверьте ?assignInNamespace, есть ли в вашем пакете пространство имен.

Вышеприведенное предполагает, что вы говорите об обновлении и отладке исходных кодов R, а не скомпилированного кода.

Я обычно использовал source() маршрут для загрузки новых версий функций, которые я улучшаю / отлаживаю, наряду с обычными инструментами отладки R.Но у меня пока нет пространств имен в моих пакетах.Мои пальцы довольно привыкли к связыванию клавиш C-c C-l в emacs + ess для поиска буфера на протяжении многих лет.

5 голосов
/ 01 ноября 2010

Возможно, вы захотите взглянуть на пакет 'mvbutils'. Я использую его для постоянного редактирования своих пакетов; Я могу добавлять, удалять и редактировать функции и документацию во время загрузки пакета, и эти изменения отражаются как в загруженной версии, в установленной версии (так что они сохраняются в следующем сеансе R), так и [когда я сообщаю это] в «пакете с исходным кодом». Я перестраиваю только через R CMD, когда хочу разослать архивированную версию кому-то еще. Для проверки кода я использую пакет 'debug', который отлично работает на загруженном пакете.

Я даже использую 'mvbutils', чтобы редактировать в реальном времени 'mvbutils', что иногда может быть немного волосатым.

Документация 'mvbutils' действительно может сделать полную демонстрацию этого в действии, но теоретически существующий документ должен показать вам, как действовать.

Не могу помочь с Emacs, извините ...

1 голос
/ 16 декабря 2016

У меня возникла та же проблема, и я решил ее при использовании RStudio.

В редакторе я проверяю опцию «Источник при сохранении» для моего R-файла, который содержит функцию. Поскольку я привык сохранять свой файл каждый раз, когда редактирую его (я думаю, это хорошая привычка), соответствующие функции, загруженные в мое рабочее пространство R., всегда актуальны

...