我遇到了SQLdf的问题。虽然我试图更新表,但它总是将NULL作为输出。我对这个问题嗤之以鼻,但我无法弄清楚如何解决它。我的代码是:
fn$sqldf("update cons set V1='%$numbernew%' where V1=$'contact'")
但是在我检查它以确定是否有变化后,所有都与开始时相同。任何想法都会有所帮助。
答案 0 :(得分:7)
正如Joran在评论中提到的,这个问题是sqldf FAQ。实际上是sqldf FAQ #8。
正如所讨论的那样,问题是您要求更新表但从未要求它返回表。同样$'contract'
也应为'$contract'
,因为您要在contract
中替换,然后用单引号括起该替换。
# set up test data for reproduciblity
con <- data.frame(V1 = c("a", "b", "c"))
contract <- "a"
numbernew <- "x"
现在我们有一些数据试试这个:
sql1 <- fn$identity("update con set V1 ='%$numbernew%' where V1 = '$contract' ")
sql2 <- "select * from main.con"
sqldf(c(sql1, sql2))
结果是:
V1
1 %x%
2 b
3 c
这也可行:
sqldf() # start a sequence of SQL statements
fn$sqldf("update con set V1 ='%$numbernew%' where V1 = '$contract' ")
ans <- sqldf("select * from main.con")
sqldf() # SQL statements finished