[R-es] Error sql en función

Carlos Ortega cof en qualityexcellence.es
Lun Jul 27 12:45:50 CEST 2015


Hola,

Mira la página de "sqldf" en GitHub, viene un ejemplo, entre otras muchas
cosas, que lo explica:

https://github.com/ggrothendieck/sqldf#Example_5._Insert_Variables

#------------------------------
# 5
minSL <- 7
limit <- 3
fn$sqldf('select * from iris where "Sepal.Length" > $minSL limit $limit')
#------------------------------

Saludos,
Carlos Ortega
www.qualityexcellence.es


2015-07-27 12:00 GMT+02:00 Griera <griera en yandex.com>:

> Hola:
>
> No consigo que la función sqldf () funcione dentro de una función. Alguien
> puede echarme una mano. En resumen, el problema es que cuando lo ejecuto
> fuera de una función no tengo ningún problema:
>
> ==========================
> > # install.packages("sqldf")
> > library(MASS)
> > library (sqldf)
> > data(Aids2, package="MASS")
> > options(digits=3)
>
> > table (Aids2$state)
>   NSW Other   QLD   VIC
>  1780   249   226   588
>
> > max (Aids2$age)
> [1] 82
>
> > # Sin función:
> > DADES_SEL = sqldf ("select * from Aids2 where state in ('NSW', 'QLD')
> and age < 40")
>
> > table (DADES_SEL$state)
>   NSW Other   QLD   VIC
>  1102     0   128     0
>
> > max (DADES_SEL$age)
> [1] 39
> ==========================
>
> Pero dentro de una función no se como pasarle los argumentos para que
> funcione:
>
> ==========================
> > SQL_PROVA = function (XDADES, XWHE)
> +   {
> +   XDADES_SQL = sqldf (paste ("select * from", XDADES, XWHE, sep = " "))
> +   return(XDADES_SQL)
> +   }
> > DADES_SEL = SQL_PROVA (XDADES = birthwt, XWHE = "where age < '40'")
> Error in sqliteSendQuery(con, statement, bind.data) :
>   error in statement: near "fromc": syntax error
> ==========================
>
> Alguien puede ayudarme y decir que estoy haciendo mal? El problema debe
> estar en el "paste" ya que si coloco la orden original funciona:
>
> ==========================
> > SQL_PROVA = function (XDADES, XWHE)
> +   {
> +   XDADES_SQL2 = sqldf ("select * from Aids2 where state in ('NSW',
> 'QLD') and age < 40")
> +   return(XDADES_SQL2)
> +   }
>
> > DADES_SEL2 = SQL_PROVA (XDADES = birthwt, XWHE = "where age < '40'")
>
> > table (DADES_SEL2$state)
>   NSW Other   QLD   VIC
>  1102     0   128     0
>
> > max (DADES_SEL2$age)
> [1] 39
> ==========================
>
> Muchas gracias y saludos.
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>



-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

	[[alternative HTML version deleted]]



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