r - 我可以在 rcpp 来源的 C++ 函数中使用 fprintf 吗?
问题描述
我在网上找到了一些我想在 R 项目中使用的代码。我设法编译并调用一切
libary(Rcpp)
sourceCpp("rcpp/my_function.cpp")
my_function("testdata.dat", "testout.dat", opt_verbose = 1)
函数中有几个 fprintf 调用,例如
fprintf(stderr, "Error: minvotes < 0!\n%s", usage);
但是它们不会打印到 R 控制台。有没有办法查看fprintf
使用该功能时的输出?
解决方案
一些东西:
a)这在任何标准终端的标准 R 会话中都可以正常工作:
> Rcpp::cppFunction("void printDemo() { fprintf(stderr, \"hello, world\\n\"); }")
> printDemo()
hello, world
>
请注意,我必须转义引号和反斜杠才能与cppFunction()
. 因此,如果这对您不起作用,则您的终端/显示器有问题。你用的是哪个?
b) 但是您不应该使用它——而编写 R 扩展对此非常清楚。
c)这就是为什么我们主要使用包装器 Rcpp::Rcout
并根据编写 R 扩展Rcpp::Rcerr
的要求重定向到 R 自己的缓冲输入/输出。
推荐阅读
- ios - setValue(value:forKey:) 在 Firebase Auth 中做了什么?
- javascript - 如何在 JavaScript 中的 Materializecss 中自动调整文本区域的大小
- sql - 在presto sql中使用正则表达式提取=和&之间的文本
- java - 如何在文本文件中写入多个 ArrayList
- android - 如何从一个 RecyclerView 获取数据并在另一个 Activity 的 RecyclerView 中显示
- neo4j - 无法使用 finally_consistent 设置创建全文搜索
- java - 如何解决重复if语句的问题
- angular-pwa - ngsw.json?ngsw-cache-bust 在 Angular 8 PWA 应用程序的离线模式下失败
- c++ - 为什么动态加载库会使我的应用程序崩溃?
- python - 合并数据框的两列,然后进行比较