更新函数sqldf R语言

时间:2013-11-21 19:42:58

标签: r sqldf

我遇到了SQLdf的问题。虽然我试图更新表,但它总是将NULL作为输出。我对这个问题嗤之以鼻,但我无法弄清楚如何解决它。我的代码是:

fn$sqldf("update cons set V1='%$numbernew%' where V1=$'contact'")

但是在我检查它以确定是否有变化后,所有都与开始时相同。任何想法都会有所帮助。

1 个答案:

答案 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