我需要知道为什么会出现提及错误,虽然当我用任何数值替换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;:语法错误
答案 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环境中运行这个查询时,它可能没问题。