在R中抑制C警告消息
我从R包e1071调用一个R函数,它与libsvm(一个C程序)接口。 此函数将C(printf)警告消息传递给R控制台。 我知道这是因为警告消息的forms(警告:……)而R警告消息是大写的(即警告:……)。
我已经尝试了一切来摆脱R中的这些消息(下沉,抑制警告,看不见),但似乎没有任何效果。
有任何想法吗?
谢谢!
该函数使用stdio而不是Rprintf
/ REprintf
或warning
,这就是为什么R输出的Rprintf
REprintf
原因。 正确的解决方案是修复libsvm
的调用以使用R输出。
黑客stdio输出是可能的 – 您可以将输出重定向到您自己的管道并使用它执行您想要的操作,但是a)它在C中有点工作,b)它很危险,因为您需要恢复标准行为你完成了这个function – 即使它出错了,c)如果在shell上使用,可能会与R输出交互。
如果你想要一个非常糟糕,又脏又快的解决方案,在multicore
运行你的函数collect(parallel(..., silent=TRUE))[[1]]
– 它会抑制stdout (你可以添加multicore:::closeStderr()
如果你想抑制stderr )。