我正在使用数据框中的数据来尝试更新看起来像这样的sqlite数据库中的表

Part | Price
------------
  a  |  5
  b  |  9


我为此收到语法错误

for(row in 1:nrow(newdata)){dbGetQuery(conn=db,"UPDATE Parts SET Price = ",newdata$Price[row], " WHERE Part = '", newdata$Part[row],"';")}


我得到的确切错误:


rsqlite_send_query(conn @ ptr,语句)中的错误:“”附近:语法错误


为什么要这样?

最佳答案

查询字符串需要内置到单个字符串中

for(row in seq_len(nrow(newdata))) {
  dbGetQuery(conn=db, sprintf("UPDATE Parts SET Price = %i WHERE Part = '%s';", newdata$Price[row], newdata$Part[row]))


}

也可以使用pastepaste0完成此操作,但是sprintf可能更易于阅读。

关于r - 使用数据框更新表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46449760/

10-16 23:50