只是like this question,除了这个软件包作者更令人烦恼,并且正在使用printf
和snprintf
来显示C / C ++代码中的消息,警告和错误:
library('inline')
silly_developer_cxx_function <- cxxfunction(
signature(x = "integer"),
'printf("%s", "Seriously! Thanks for using my function!!");
return ScalarReal(INTEGER(x)[0]);'
)
silly_developer_function <- function(i){
print("Thanks for using my function!!")
return(silly_developer_cxx_function(as.integer(i)))
}
我可以使用capture.output
来抑制R级别的打印语句,但sprintf
语句似乎无法使用:
> capture.output(x <- silly_developer_function(1L), file='/dev/null')
Seriously! Thanks for using my function!!
答案 0 :(得分:0)
printf
或std::cout
每Section 6.5 of Writing R Extensions。
您通常可以访问Tomoaki读取的r-sig-db上的数据库软件包的维护者,并且我们(也有)一个rpostgresql的dedidated列表。 Tomoaki非常敏感,我建议使用适当的场地。通风没有帮助。我只抓住了它,因为你(错误地?)将Rcpp
标签粘在了它上面。或者你偶然的意思是Tim Keitt的(非常不同的)rpg,但错误地提到了RPostgreSQL?
编辑:一些历史记录。我们从来没有适当的PostgreSQL后端。因此建议将此作为Google Summer of Code的主题,并且一名学生接受并编写了第一个有点hackish的版本。主要是看看RMySQL做了什么,并适应PostgreSQL API。因为行为是由数据库接口的R / S定义 - DBI定义的。
所以你似乎抱怨的是(在RPostgreSQL资源中找到第一个grep
)
(void) sprintf(buf, msg, (int) mgr->length);
RS_DBI_errorMessage(buf, RS_DBI_ERROR);
因此我相当肯定RMySQL会做同样的事情。鉴于这是一个程序化的用途,如果准备好的字符串(或者更确切地说,char
向量),我认为你实际上可以抑制它。
如果我是你,我会看一下来源和/或询问r-sig-db。