我有SQLdf的问题.虽然我正在尝试更新表,但它总是将NULL作为输出.我对这个问题嗤之以鼻,但我无法弄清楚如何解决它.我的代码是:
fn$sqldf("update cons set V1='%$numbernew%' where V1=$'contact'")
Run Code Online (Sandbox Code Playgroud)
但是在我检查它以确定是否有变化后,所有都与开始时相同.任何想法都会有帮助.
正如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"
Run Code Online (Sandbox Code Playgroud)
现在我们有一些数据试试这个:
sql1 <- fn$identity("update con set V1 ='%$numbernew%' where V1 = '$contract' ")
sql2 <- "select * from main.con"
sqldf(c(sql1, sql2))
Run Code Online (Sandbox Code Playgroud)
结果是:
V1
1 %x%
2 b
3 c
Run Code Online (Sandbox Code Playgroud)
这也可以:
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
Run Code Online (Sandbox Code Playgroud)