gpt4 book ai didi

R使用sqldf从数据表中删除行

转载 作者:行者123 更新时间:2023-12-05 05:05:26 27 4
gpt4 key购买 nike

我想知道 R 是否不支持使用 sqldf 从数据表中删除行。我的数据看起来像这样 enter image description here

我正在尝试使用删除语句从数据表中删除。没有底层数据库,只有一个 data.table。但是当我输入以下 sql 语句时:

loans_good <- sqldf("Delete from LoansDT1 where status not in ('Current','Default')")

我收到以下错误消息:

'SQL statements must be issued with dbExecute() or dbSendStatement() instead of dbGetQuery() or dbSendQuery().' 

由于我收到相同的更新消息,我想知道这是否是一个限制。

最佳答案

这个问题是一个常见问题解答。请参阅 sqldf github home page 上的常见问题解答 8 .

手术确实奏效了。该消息是警告消息,而不是错误消息。该消息具有误导性,您可以忽略它。请注意,该问题没有显示完整的消息——完整的消息确实表明它是一条警告消息。

警告消息来自 RSQLite,而不是 sqldf 本身。它是由在某些时候引入到 RSQLite 中的非向后兼容更改引起的;然而,如前所述,实际操作仍然有效。

还有 deleteupdate 作用于数据库中的表。它们不返回值,因此即使它们有效,您也看不到任何结果。如果您想要一个结果,您必须在 deleteupdate 之后使用 select 语句来检索修改后的表。

这是一个使用内置 6 行 BOD data.frame 的示例。它删除最后一行,因为该行的时间大于 5。

library(sqldf)

sqldf(c("delete from BOD where Time > 5", "select * from BOD"))
## Time demand
## 1 1 8.3
## 2 2 10.3
## 3 3 19.0
## 4 4 16.0
## 5 5 15.6
## Warning message:
## In result_fetch(res@ptr, n = n) :
## SQL statements must be issued with dbExecute() or dbSendStatement() instead of dbGetQuery() or dbSendQuery().

请注意,这列在 sqldf 问题中,其中提供了消息的解决方法:https://github.com/ggrothendieck/sqldf/issues/40

关于R使用sqldf从数据表中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60537604/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com