gpt4 book ai didi

c - 抑制 R 中的 C 警告消息

转载 作者:行者123 更新时间:2023-12-02 05:00:02 25 4
gpt4 key购买 nike

我正在调用与 libsvm(C 程序)接口(interface)的 R 包 e1071 中的 R 函数。此函数将 C (printf) 警告消息传递到 R 控制台。我知道这一点是因为警告消息的形式是 (warning:...) 而 R 警告消息是大写的 (即 Warning:...)。

我已尽一切努力摆脱 R 中的这些消息(sink、suppressWarnings、invisible),但似乎没有任何效果。

有什么想法吗?

谢谢!

最佳答案

该函数使用 stdio 而不是 Rprintf/REprintfwarning 这就是为什么重定向R 输出将不起作用。正确的解决方案是修复 libsvm 中的调用,改为使用 R 输出。

破解 stdio 输出是可能的 - 您可以将输出重定向到您自己的管道并用它做您想做的事,但是 a) 它在 C 中有点工作 b) 它是危险,因为您需要在完成该函数后恢复标准行为 - 即使它出错,并且 c) 如果在 shell 上使用,可能会与 R 输出交互。

如果你想要一个非常古怪、肮脏但快速的解决方案,请在 collect(parallel(..., silent=TRUE))[[1]] 中运行你的函数,来自 multicore - 它抑制 stdout(如果你也想抑制 stderr,你可以添加 multicore:::closeStderr())。

关于c - 抑制 R 中的 C 警告消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17303009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com