Есть ли способ остановить сбой RGui, если программа RCPP не работает правильно? - PullRequest
0 голосов
/ 21 сентября 2018

Я использую Rcpp для запуска кода C ++, используя RGui (версия 3.4.1) в качестве пользовательского интерфейса.Довольно часто я делаю изменения в коде C ++, которые правильно компилируются, но вызывают ошибки (например, поиск за пределами массива), когда я запускаю соответствующую программу в RGui, что приводит к сбою RGui.Это усугубляет, потому что мне приходится заново открывать RGui, заново открывать мой R-скрипт (иногда с потерянными несохраненными изменениями), снова устанавливать рабочий каталог и т. Д., Прежде чем я смогу заново скомпилировать код C ++ и запустить программу таким образом.способ найти проблему или проверить исправления.Иногда он быстро завершается сбоем снова, потому что я не устранил или не обошел проблему.

Есть ли способ изменить способ работы Rcpp, так что RGui возвращает сообщение об ошибке вместо сбоя в подобных ситуациях?

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

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

Когда вы получаете всплывающее окно, которое говорит вам перезапустить R, вы этого не делаете.Вы открываете диспетчер задач, щелкаете правой кнопкой мыши по процессу и выбираете «Создать файл дампа».Найдите этот файл в проводнике и откройте его в каком-нибудь текстовом редакторе.

Они очень большие и полны всевозможных вещей, но если вы используете функцию поиска для поиска какой-либо строки, вы знаете, что она есть в вашем скриптеТогда вы можете найти все несохраненные работы.Затем вы можете скопировать и вставить этот файл в другой файл для сохранения.

Если вы используете R-studio вместо R-GUI, обычно удается лучше позаботиться о вашей несохраненной работе.

0 голосов
/ 21 сентября 2018

Кратко:

  1. Пишется как Rcpp.Заглавная R, строчные cpp.
  2. Да, ошибок нет :)
  3. В общем, 2. является единственным жизнеспособным ответом.Если вам нужен управляемый язык, используйте R.
  4. Если код нарушает вашу среду, тестируйте вне среды .Шутки в сторону.Вот, например, почему я (со-) написал littler и протестировал «сырой код» в командной строке: он может только закрыть приложение командной строки.
  5. Мы do имеет возможность, например, в RcppArmadillo для проверки на доступ к вектору "вне границ": используйте x.at(i,j), который выдаст предупреждение.См http://arma.sourceforge.net/docs.html#element_access
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...