[R-es] Bucle for que se salte los errores

Javier Marcuzzi javier.ruben.marcuzzi en gmail.com
Lun Jun 12 15:05:00 CEST 2017


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
Enviado: lunes, 12 de junio de 2017 9:57
Para: Javier Marcuzzi; Xavi tibau alberdi; Guillermo.Vinue en uv.es
CC: Lista R
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
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
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
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/02ab9e7b/attachment-0001.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: 55D2C39386BA42C4A61D52F464E9635B.png
Type: image/png
Size: 158 bytes
Desc: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20170612/02ab9e7b/attachment-0001.png>


Más información sobre la lista de distribución R-help-es