为什么发送到\n
的{{1}}换行符的Rcpp函数无法编译?
这有效
Rcpp::Rcout
但这不是
cppFunction('void testing() {Rcout<<"hello"<<std::endl;}')
testing()
# hello
答案 0 :(得分:3)
R的字符串转义正在妨碍你。尝试:
cppFunction('void testing() {Rcout<<"hello\\n";}')
请注意双\\
。您不想将文字新行传输到生成的C ++脚本,而是希望自己发送字符\n
- 因此,您需要转义\
。
为了避免这样的问题,您应该更喜欢使用属性界面 - 请参阅Rcpp-attributes。
请注意,如果您尝试运行cppFunction('void testing() {Rcout<<"hello\n";}', verbose=TRUE)
,则此错误会更加明显 - 您可以看到生成的脚本具有文字换行符而不是\n
个字符。