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
персонажи.