cppFunction: компиляция Rcout << "разрыв строки \n"

Почему Rcpp функционирует с \n перевод строки отправлен Rcpp::Rcout не компилировать?

Это работает

cppFunction('void testing() {Rcout<<"hello"<<std::endl;}')
testing()
# hello

но это не

cppFunction('void testing() {Rcout<<"hello\n";}')

1 ответ

Решение

Бегущая строка R мешает вам. Пытаться:

cppFunction('void testing() {Rcout<<"hello\\n";}')

Обратите внимание на двойной \\, Вместо того, чтобы переносить буквальную новую строку в сгенерированный скрипт C++, вы хотите отправить символы \n сами - значит, вам нужно сбежать \,

Чтобы избежать подобных проблем, вы должны использовать интерфейс атрибутов - см. Rcpp-attribute.

Обратите внимание, что эта ошибка становится более очевидной, если вы попытаетесь запустить cppFunction('void testing() {Rcout<<"hello\n";}', verbose=TRUE) - вы можете видеть, что сгенерированный скрипт имеет буквальный перевод строки, а не \n персонажи.

Другие вопросы по тегам