sqliteSendQuery(con,statement,bind.data)中的错误:语句中的错误:near" [

时间:2016-07-29 12:37:25

标签: sqldf

我需要知道为什么会出现提及错误,虽然当我用任何数值替换DFinal [i," x"]时它工作正常。感谢您的帮助

for( i in 1:nrow(DFinal)){
+     result =0
+     var1= DFinal[i,"x"]
+     var2= DFinal[i,"y"]
+     result <- sqldf(' select count(distinct(V5)) from DLoc where V1= DFinal[i,"x"] and V5 in (select distinct(V5) from DLoc where V1=var2) ')
+     
+     DFinal[i,"res"]<- result
+     
+ }

sqliteSendQuery(con,statement,bind.data)中的错误:   陈述中的错误:附近&#34; [i,&#34; x&#34;]&#34;:语法错误

1 个答案:

答案 0 :(得分:0)

您的查询没有任何意义,因为您指的是R变量。而是使用变量' values

for (i in 1:nrow(DFinal)) {
    result <- 0
    var1  <- DFinal[i, "x"]
    var2  <- DFinal[i, "y"]
    query <- paste0('select count(distinct V5) from DLoc where V1 = ', var1,
                    ' and V5 in (select distinct V5 from DLoc where V1 = ', var2, ')')
    result <- sqldf(query)

    DFinal[i, "res"] <- result   
}

您的查询看起来可能还需要一些改进,但上述代码至少应该允许您运行它。

另一条评论:通常不建议将原始SQL查询连接在一起,因为它可能会导致SQL注入攻击。但是,当你在一个大概是封闭的R环境中运行这个查询时,它可能没问题。