J'ai deux fonctions similaires que je veux appliquer à une trame de données. Chaque fonction utilise deux vecteurs de la trame de données et crée un nouveau vecteur. Cependant, l'une des fonctions renvoie parfois des erreurs. En fin de compte, je vais utiliser ceci dans une boucle for et compter le nombre d'erreurs que chaque fonction donne (pour montrer qu'une fonction est meilleure que l'autre :-)). Cependant, je ne sais pas si je comprends tryCatch
ou try
assez bien pour utiliser avec des tuyaux. Voici un exemple d'une fois où une fonction échouerait.Utilisation de tryCatch avec des tubes Magrittr dans R
library(tidyverse)
# Function that works
func_1 <- function(arg1, arg2) {
arg1 + arg2
}
# Function that errors
func_2 <- function(arg1, arg2) {
if(arg1 == 0) {error("Some Error")}
else arg1 * arg2
}
# Using the functions with pipes
cars <- mtcars %>%
filter(mpg > 18) %>%
select("vs", "carb") %>%
mutate(func1 = func_1(vs,carb)) %>%
mutate(func1 = func_2(vs, carb))
Quand j'Enroulez le muter avec un try
puis le nouveau vecteur/colonne ne soit pas calculé. Je ne peux pas obtenir tryCatch
pour travailler en utilisant les tuyaux. Toutes les pensées ou approches alternatives sont appréciées.
Quel est le comportement souhaité en cas d'erreur? – Consistency
Je vais parcourir de nombreuses trames de données, donc chaque fois qu'une fonction ne fonctionne pas, elle peut incrémenter un compteur: 'func_2_errors = func_2_errors + 1'. Si les deux fonctions fonctionnent, la trame de données devrait avoir 4 colonnes, si une fonction échoue, la trame de données devrait avoir 3 colonnes, si les deux échouent, elle devrait avoir juste l'original 2. –