Ce code
> A <- data.frame(col1 = c(1,2,3),col2 = c("red","blue","green"))
> color_num <- 2
> fn$sqldf("select * from A where col1 >= '$color_num'")
donne l'erreur
Erreur dans eval(parse(text = paste(..., sep = "")), env) : objet 'color' non trouvé
Mais si la variable color_num
reçoit à la place un nom sans trait de soulignement (disons colornum
), puis en exécutant fn$sqldf("select * from A where col1 >= '$colornum'")
donne les résultats attendus, sans erreur.
Je crois sqldf
remplace les traits de soulignement par des points en coulisses, ce qui l'amène à traiter le composant précédant le trait de soulignement comme une table et la partie suivante comme un nom de colonne. Cette réponse (et commentaires) à une question sur les noms de colonnes dans les fichiers sqldf
indique que la bibliothèque a, à un moment donné, remplacé les points par des underscores mais ne le fait plus, mais je n'ai rien trouvé sur le remplacement des underscores par des points.
C'est un problème car la convention de dénomination que j'utilise fait un usage intensif des caractères de soulignement pour les noms de variables.
Existe-t-il un moyen de faire fonctionner les noms de variables contenant des caractères de soulignement dans le système de gestion de l'information ? sqldf
des requêtes ?