RCpp: как перезагрузить перекомпилированный код C ++ без перезапуска R

Я экспериментирую с примером rcpp_hello_world, сгенерированным Rcpp.package.skeleton(),

Я сделал небольшое изменение в rcpp_hello_world.cppЯ хотел бы перекомпилировать пакет и запустить функцию с измененным кодом.

Однако, несмотря на очистку пространства имен с rm(), отделяя библиотеку с detach(), удаляя пакет с помощью remove.packages(), перекомпилируем и переустанавливаем пакет с install.packages(.., repos=NULL, type = 'source')и снова подключить библиотеку library(), R по-прежнему запускает старую версию кода .cpp.

Если я выйду и перезапущу R, library() загрузит измененный код .cpp и запустит его, как задумано, но мне не нужно перезапускать R каждый раз, когда я изменяю код C ++ (если это возможно).

Как получить R для правильного обновления вызова C ++ без выхода из R?

2

Решение

Как правило, рекомендуется перезапустить сеанс / перезагрузить пакет.

Поскольку вы можете не захотеть перезапускать основной сеанс, вы можете

  • используйте Rscript или littler для загрузки нового примера и тестов, я часто так делаю

  • используйте RStudio, где процесс сборки пакета теперь собирает пакет и перезагружает его в новом для вас сеансе

  • использовать систему, где вы можете иметь несколько сеансов R и перезапустить те

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]