cppFunction:编译Rcout<< “换行\ n”

时间:2013-11-21 05:21:36

标签: r rcpp

为什么发送到\n的{​​{1}}换行符的Rcpp函数无法编译?

这有效

Rcpp::Rcout

但这不是

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

1 个答案:

答案 0 :(得分:3)

R的字符串转义正在妨碍你。尝试:

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

请注意双\\。您不想将文字新行传输到生成的C ++脚本,而是希望自己发送字符\n - 因此,您需要转义\

为了避免这样的问题,您应该更喜欢使用属性界面 - 请参阅Rcpp-attributes

请注意,如果您尝试运行cppFunction('void testing() {Rcout<<"hello\n";}', verbose=TRUE),则此错误会更加明显 - 您可以看到生成的脚本具有文字换行符而不是\n个字符。