jose romero
2011-Sep-27 20:03 UTC
[R] problem with switch function across R versions 2.10 and 2.13
Hello, The following piece of code works fine in R.2.10 (ubuntu): switch(distr, normal = {if (is.infinite(param["desv"])) n <- c(n,"La desv. estándar no puede ser Inf.") if (param["desv"]<0) n <- c(n,"La desv. estándar no puede ser <0.") }, expo = {if (param["tasa"]<=0) n <- c(n,"La tasa debe ser >0.") }, gamma = {if (param["s"]<=0) n <- c(n,"El parametro s debe ser >0.") if (param["a"]<=0) n <- c(n,"El parámetro a debe ser >0.") }, unifc = {if (param["min"]>param["max"]) n <- c(n,"Min. no puede ser mayor que Max.")}, binom = {if (param["p"]<0|param["p"]>1) n <- c(n,"p debe estar entre 0 y 1") if (param["n"]<0|!all.equal(param["n"], trunc(param["n"]))) n <- c(n,"Valor de n no entero o negativo.") if (param["n"]<max(x)) n <- c(n,paste("El valor máximo de",nombre, "no puede exceder el valor máximo de n.")) }, geom = {if (param["p"]<0|param["p"]>1) n <- c(n,"p debe estar entre 0 y 1") }, pois = {if (param["tasa"]<0) n <- c(n,"tasa no puede ser negativa")}, unifd = {if (param["min"]>param["max"]) n <- c(n,"minimo no puede ser mayor que maximo") }, , stop(paste("Distribución",distr,"no reconocida.")) ) However, using R2.13 (under Windows), I get the following error: Error en .local(x, distr, ...) : duplicado de interuptores por defecto: '' y 'stop(paste...' The 2.13 help on the function says the following: In the case of no match, if there is a unnamed element of ... its value is returned. (If there is more than one such argument an error is returned. Before R 2.13.0 the first one would have been used.) So it appears to be an issue of the pre or post 2.13 version being used. However, i don't see how the above code has more than one unamed element and thus how this error is produced. Can anyone enlighten me on this error? Thanks in advance, josé loreto romero palma [[alternative HTML version deleted]]
Duncan Murdoch
2011-Sep-27 20:19 UTC
[R] problem with switch function across R versions 2.10 and 2.13
On 11-09-27 4:03 PM, jose romero wrote:> Hello, > > The following piece of code works fine in R.2.10 (ubuntu): > > switch(distr, > normal = {if (is.infinite(param["desv"])) > n<- c(n,"La desv. est?ndar no puede ser Inf.") > if (param["desv"]<0) > n<- c(n,"La desv. est?ndar no puede ser<0.") > }, > expo = {if (param["tasa"]<=0) > n<- c(n,"La tasa debe ser>0.") }, > gamma = {if (param["s"]<=0) > n<- c(n,"El parametro s debe ser>0.") > if (param["a"]<=0) > n<- c(n,"El par?metro a debe ser>0.") }, > unifc = {if (param["min"]>param["max"]) > n<- c(n,"Min. no puede ser mayor que Max.")}, > binom = {if (param["p"]<0|param["p"]>1) > n<- c(n,"p debe estar entre 0 y 1") > if (param["n"]<0|!all.equal(param["n"], > trunc(param["n"]))) > n<- c(n,"Valor de n no entero o negativo.") > if (param["n"]<max(x)) > n<- c(n,paste("El valor m?ximo de",nombre, > "no puede exceder el valor m?ximo de n.")) > }, > geom = {if (param["p"]<0|param["p"]>1) > n<- c(n,"p debe estar entre 0 y 1") }, > pois = {if (param["tasa"]<0) > n<- c(n,"tasa no puede ser negativa")}, > unifd = {if (param["min"]>param["max"]) > n<- c(n,"minimo no puede ser mayor que maximo") }, ,You have an extra comma beyond the end of this line. Duncan Murdoch> stop(paste("Distribuci?n",distr,"no reconocida.")) ) > > However, using R2.13 (under Windows), I get the following error: > Error en .local(x, distr, ...) : > duplicado de interuptores por defecto: '' y 'stop(paste...' > > The 2.13 help on the function says the following: > > In the case of no match, if there is a unnamed element of ... its value is returned. (If there is more than one such argument > an error is returned. Before R 2.13.0 the first one would have > been used.) > > So it appears to be an issue of the pre or post 2.13 version being used. However, i don't see how the above code has more than one unamed element and thus how this error is produced. Can anyone enlighten me on this error? > > Thanks in advance, > > jos? loreto romero palma > [[alternative HTML version deleted]] > > > > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.