Supprimer les messages d’avertissement C dans R

J’appelle une fonction R du package R e1071 qui est interfacé avec libsvm (un programme C). Cette fonction transmet des messages d’avertissement C (printf) à la console R. Je le sais car les messages d’avertissement sont de la forme (avertissement: …) alors que les messages d’avertissement R sont en majuscule (c.-à-d. Avertissement: …).

J’ai tout essayé pour me débarrasser de ces messages en mode R (évier, supprimerAvertissement, invisible), mais rien ne semble fonctionner.

Des idées?

Merci!

La fonction utilise stdio au lieu de Rprintf / REprintf ou warning raison pour laquelle la ré-orientation de la sortie R ne fonctionne pas. La solution appropriée consiste à résoudre les appels dans libsvm pour utiliser la sortie R à la place.

Il est possible de pirater la sortie stdio – vous pouvez redirect la sortie vers votre propre canal et en faire ce que vous voulez, mais a) c’est un peu de travail en C et b) c’est dangereux car vous devez restaurer le comportement standard après vous en avez terminé avec la fonction – même si elle a une erreur out et que c) in peut interagir avec la sortie R si elle est utilisée sur un shell.

Si vous voulez une solution vraiment fastidieuse, sale et rapide, exécutez votre fonction dans collect(parallel(..., silent=TRUE))[[1]] depuis multicore – il supprime stdout (vous pouvez append multicore:::closeStderr() si vous souhaitez également supprimer stderr ).