Поскольку Joran упоминается в комментарии, этот вопрос является часто задаваемым sqldf. Фактически его 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
Сканирование часто задаваемые вопросы для пакет иногда может быть [полезным] (https://code.google.com/p/sqld е/# 8._Why_am_I_having_problems_with_update?). – joran
Я знаю, но не о аргументах. Это проблема, которая возникает иногда, и она имеет какое-то отношение к пакету sqldf, что не позволяет легко обновлять таблицу ... – Tony