Patricio Fuenmayor Viteri
2012-Apr-18 15:35 UTC
[R-es] Error función eval en librería sqldf
Hola a todos.He actualizado R de la version 2.14.1 a la 2.15.0 y se me presenta el siguiente problema.Tengo unas consultas sql usando la libreria sqldf que tienen incorporadas variables, algo asi: err01 <- function(){require(sqldf)t00 <- c("a","b")d00 <- data.frame(''X''=c("a","b","c"),''Y''=c(1,2,3)) for(i in 1:2){t0 <- t00[i]res <- fn$sqldf("select * from d00 where X = ''$t0''")print(res)}} si ejecuto la funcion err01() me sale el siguiente error: Error in eval(expr, envir, enclos) : object ''t0'' not found Pero lo curioso es que si ejecuto el código parte por parte, si sale el resultado.Gracias por cualquier pista que me puedan dar.Me imagino que tiene algo que ver con la libreria gsubfn que es utilizada por sqldf Atte.Patricio [[alternative HTML version deleted]]
Hola, El problema está en la asignación de t0<-t00[i] que tiene un ámbito de existencia dentro de la propia función. Si la asignación es t0<<-t00[i] entonces la asignación es al entorno y así sí que cuando la pasas como variable a la consulta sql sí que funciona...> > err01 <- function(){+ require(sqldf)+ t00 <- c("a","b")+ d00 <- data.frame(''X''=c("a","b","c"),''Y''=c(1,2,3))+ for(i in 1:2){+ *t0 <<- t00[i]*+ res <- fn$sqldf("select * from d00 where X = ''$t0''")+ print(res)+ }+ }> > err01() X Y1 a 1 X Y 1 b 2 Saludos, Carlos Ortega www.qualityexcellence.es El 18 de abril de 2012 17:35, Patricio Fuenmayor Viteri < cpfuenmayor@hotmail.com> escribió:> > Hola a todos.He actualizado R de la version 2.14.1 a la 2.15.0 y se me > presenta el siguiente problema.Tengo unas consultas sql usando la libreria > sqldf que tienen incorporadas variables, algo asi: > err01 <- function(){require(sqldf)t00 <- c("a","b")d00 <- > data.frame(''X''=c("a","b","c"),''Y''=c(1,2,3)) > for(i in 1:2){t0 <- t00[i]res <- fn$sqldf("select * from d00 where X > ''$t0''")print(res)}} > si ejecuto la funcion err01() me sale el siguiente error: > Error in eval(expr, envir, enclos) : object ''t0'' not found > Pero lo curioso es que si ejecuto el código parte por parte, si sale el > resultado.Gracias por cualquier pista que me puedan dar.Me imagino que > tiene algo que ver con la libreria gsubfn que es utilizada por sqldf > Atte.Patricio > > > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]