[R-es] Error sql en función
Griera
griera en yandex.com
Lun Jul 27 12:00:45 CEST 2015
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.
Más información sobre la lista de distribución R-help-es