[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