Re: [R-es] Error sql en función

2015-07-27 Por tema Carlos Ortega
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 gri...@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@r-project.org
 https://stat.ethz.ch/mailman/listinfo/r-help-es




-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Error sql en función

2015-07-27 Por tema Griera-yandex
Hola Carlos:

Gracias por responder!

Ayer caí en esta página al buscar el problema con google, pero no conseguir 
entender y implementar lo que sugiere. Sin entender nada, lo que hice fue:


 library(MASS)
 library (sqldf)  # Per SQL
 data(Aids2, package=MASS)
 SQL_PROVA = function (XDADES, XWHE)
+   {
+   XDADES_SQL = sqldf (select * from $XDADES $XWHE)
+   return(XDADES_SQL)
+   }
 DADES_SEL = SQL_PROVA (XDADES = birthwt, XWHE = where age  '40')
Error in sqliteSendQuery(con, statement, bind.data) : 
  error in statement: near $XDADES: syntax error


Evidentemente da error.

Tampoco funcionaba si introducía \age\ en el agumento del where:


 DADES_SEL = SQL_PROVA (XDADES = birthwt, XWHE = where \age\  '40')
Error in sqliteSendQuery(con, statement, bind.data) : 
  error in statement: near $XDADES: syntax error


He buscado ejemplos con google. pero no he encontrado nada.

Gracias y saludos.


On Mon, 27 Jul 2015 12:45:50 +0200
Carlos Ortega c...@qualityexcellence.es wrote:

 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 gri...@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@r-project.org
  https://stat.ethz.ch/mailman/listinfo/r-help-es
 
 
 
 
 -- 
 Saludos,
 Carlos Ortega
 www.qualityexcellence.es

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es