Вызывать графики R из c++ с помощью RInside/Rcpp

Можно ли вызывать функции сюжета из С++? В настоящее время, когда я пытаюсь это сделать, терминал Ubuntu на какое-то время зависает (может быть, на время, в течение которого будет создан трехмерный график, а затем повернут на полные 360 градусов), а затем размораживается, даже не открывая новое окно. Это ожидаемое поведение или я что-то делаю не так? Как я могу запустить графики (R-графика) из С++ с помощью rinside и rcpp?

спасибо

-Эгон


person Egon    schedule 28.02.2011    source источник


Ответы (2)


Да, в пакете Rcpp есть рабочие примеры. Посмотрите на файл functionCallback/newApiExample.r в каталоге examples/.
Возможно, вам придется поэкспериментировать с sleep(), чтобы «задержать» график на мгновение, или построить в файл, а затем отобразить файл. Все зависит от того, но вы дали мало подробностей.

person Dirk Eddelbuettel    schedule 28.02.2011
comment
В основном я использую пакет np и функцию npplot в R. Когда я пытаюсь это сделать, с sys.sleep(xx) или без него, он создает файл Rplots.pdf, но он никогда не открывается ни в одной программе для чтения PDF. - person Egon; 28.02.2011
comment
Встраивание по умолчанию устанавливает флаг interactive в FALSE. Я полагаю, вам придется изменить это. Или нарисуйте файл png и отобразите его в виджете. - person Dirk Eddelbuettel; 28.02.2011

Переменная среды, связанная с интерактивным сеансом, называется R_INTERACTIVE_DEVICE.
Нам нужно создать файл с именем .Renviron в нашем домашнем каталоге, а затем добавить в этот файл следующий код:

R_INTERACTIVE_DEVICE = X11 для систем на базе Linux.

anisha@linux-y3pi:~> ls .Renviron
.Renviron

anisha@linux-y3pi:~> cat .Renviron
R_INTERACTIVE_DEVICE = X11a

Ссылки:
1. http://stat.ethz.ch/R-manual/R-patched/library/base/html/Startup.html
2. http://stat.ethz.ch/R-manual/R-patched/library/base/html/options.html

person Aquarius_Girl    schedule 30.07.2012
comment
@DirkEddelbuettel У меня это не сработало по умолчанию, поэтому я потратил час на поиск этого ответа! - person Aquarius_Girl; 14.09.2012
comment
Я бы призвал устранять причины проблем, а не симптомы. - person Dirk Eddelbuettel; 14.09.2012