[R-es] Bucle for que se salte los errores
Jesús Para Fernández
j.para.fernandez en hotmail.com
Lun Jun 12 15:35:20 CEST 2017
Sí, igual no me expresé de la mejor manera posible.
Gracias!!!
________________________________
De: Javier Marcuzzi <javier.ruben.marcuzzi en gmail.com>
Enviado: lunes, 12 de junio de 2017 15:05
Para: Jesús Para Fernández; Xavi tibau alberdi; Guillermo.Vinue en uv.es
Cc: Lista R
Asunto: RE: [R-es] Bucle for que se salte los errores
Estimado Jesús Para Fernández
Pero no es lo mismo, usted pidió para cuándo i vale 0, el tryCatch es para todos los casos en donde no se puede porque hay un error, justo coloco en el buscador la definición para compartirla y encuentro un ejemplo muy apropiado.
# tryCatch.Rscript -- experiments with tryCatch
# Get any arguments
arguments <- commandArgs(trailingOnly=TRUE)
a <- arguments[1]
# Define a division function that can issue warnings and errors
myDivide <- function(d, a) {
if (a == 'warning') {
return_value <- 'myDivide warning result'
warning("myDivide warning message")
} else if (a == 'error') {
return_value <- 'myDivide error result'
stop("myDivide error message")
} else {
return_value = d / as.numeric(a)
}
return(return_value)
}
# Evalute the desired series of expressions inside of tryCatch
result <- tryCatch({
b <- 2
c <- b^2
d <- c+2
if (a == 'suppress-warnings') {
e <- suppressWarnings(myDivide(d,a))
} else {
e <- myDivide(d,a) # 6/a
}
f <- e + 100
}, warning = function(war) {
# warning handler picks up where error was generated
print(paste("MY_WARNING: ",war))
b <- "changing 'b' inside the warning handler has no effect"
e <- myDivide(d,0.1) # =60
f <- e + 100
return(f)
}, error = function(err) {
# error handler picks up where error was generated
print(paste("MY_ERROR: ",err))
b <- "changing 'b' inside the error handler has no effect"
e <- myDivide(d,0.01) # =600
f <- e + 100
return(f)
}, finally = {
print(paste("a =",a))
print(paste("b =",b))
print(paste("c =",c))
print(paste("d =",d))
# NOTE: Finally is evaluated in the context of of the inital
# NOTE: tryCatch block and 'e' will not exist if a warning
# NOTE: or error occurred.
#print(paste("e =",e))
}) # END tryCatch
print(paste("result =",result))
Javier Rubén Marcuzzi
De: Jesús Para Fernández<mailto:j.para.fernandez en hotmail.com>
Enviado: lunes, 12 de junio de 2017 9:57
Para: Javier Marcuzzi<mailto:javier.ruben.marcuzzi en gmail.com>; Xavi tibau alberdi<mailto:xavitibau en gmail.com>; Guillermo.Vinue en uv.es<mailto:Guillermo.Vinue en uv.es>
CC: Lista R<mailto:r-help-es en r-project.org>
Asunto: Re: [R-es] Bucle for que se salte los errores
He encontrado la respuesta. EL ejemplo que puse era trivial, ya que es obvio que if(i ==0) entonces next, pero me referia a sin saber si va a ser error el modelo o no.
Para esto he encontrado la solución
for(i in -3:3){
tryCatch({
z<-1/i
> z<-z*z
> modelo<-lm(z~1)
}, error=function(e){print("es un error"})
}
Gracias de todas maneras!!!!!
Jesús
De: R-help-es <r-help-es-bounces en r-project.org> en nombre de Javier Marcuzzi <javier.ruben.marcuzzi en gmail.com>
Enviado: lunes, 12 de junio de 2017 14:48
Para: Xavi tibau alberdi; Guillermo.Vinue en uv.es
Cc: Lista R
Asunto: Re: [R-es] Bucle for que se salte los errores
Case también podría ir, en realidad cualquier función de condicional, hay algo de gusto personal también (yo prefiero if).
Javier Rubén Marcuzzi
De: Xavi tibau alberdi
Enviado: lunes, 12 de junio de 2017 9:46
Para: Guillermo.Vinue en uv.es
CC: Lista R
Asunto: Re: [R-es] Bucle for que se salte los errores
Otra opcio es no incluir en 0
For (i in c(-2,-1,1,2)
El 12 jun. 2017 14:43, <Guillermo.Vinue en uv.es> escribió:
Hola,
Creo que sería añadir if(i == 0) next
Saludos,
Guillermo
> Buenas, �como puedo hacer que el bucle for se salte el error que salta
cuando i<-0 en el codigo que paso??
>
>
>
> count <- 0
> for(i in -2:2){
> z<-1/i
> z<-z*z
> modelo<-lm(z~1)
> }
>
>
> Gracias
>
>
>
>
>
> [[alternative HTML version deleted]]
>
>
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
Página de Información de R-help-es<https://stat.ethz.ch/mailman/listinfo/r-help-es>
stat.ethz.ch
Esta es una lista de correo para solicitar ayuda sobre R en español y se entiende como un complemento social a la documentación, libros, etc. disponibles sobre R ...
[[alternative HTML version deleted]]
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
Página de Información de R-help-es<https://stat.ethz.ch/mailman/listinfo/r-help-es>
stat.ethz.ch
Esta es una lista de correo para solicitar ayuda sobre R en español y se entiende como un complemento social a la documentación, libros, etc. disponibles sobre R ...
[[alternative HTML version deleted]]
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
Página de Información de R-help-es<https://stat.ethz.ch/mailman/listinfo/r-help-es>
stat.ethz.ch
Esta es una lista de correo para solicitar ayuda sobre R en español y se entiende como un complemento social a la documentación, libros, etc. disponibles sobre R ...
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20170612/558020fa/attachment-0001.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: 55D2C39386BA42C4A61D52F464E9635B.png
Type: image/png
Size: 158 bytes
Desc: 55D2C39386BA42C4A61D52F464E9635B.png
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20170612/558020fa/attachment-0001.png>
Más información sobre la lista de distribución R-help-es