gpt4 book ai didi

r - 如何正确地使用 %in% 对 monet.frame 进行子集化

转载 作者:行者123 更新时间:2023-12-04 04:33:09 25 4
gpt4 key购买 nike

似乎一切正常,如果

subset(mdf, id %in% c("A","B"))

但错误如果
ids = c("A","B")
subset(mdf,id %in% ids)

以下是演示代码:
con1 = dbConnect(dbDriver("MonetDB"),"monetdb://go:50000/voc")
d = data.frame(id=base::sample(c("A","B","C","D"),100,replace=T),v=sample(1:10,100,replace=T),stringsAsFactors=F)
head(d)
str(d)

dbWriteTable(con1, "test", d)

mdf <- monet.frame(con1,"test")
subset(mdf, id %in% c("A","B"))

ids = c("A","B")
subset(mdf,id %in% ids)

MonetDB.R_0.8.0 DBI_0.2-7

R 版本 3.0.2 (2013-09-25)
平台:x86_64-pc-linux-gnu(64 位)
subset(mdf, id %in% c("A","B"))实际上转换为 sql 为:
MonetDB-backed data.frame surrogate
2 columns, 44 rows
Query: SELECT * FROM test WHERE ( (id IN ('A','B')) )
Columns: id (character), v (numeric)

错误信息为
IDS = c("A","B")
subset(mdf,id %in% IDS)

是这样的:
Error in .local(conn, statement, ...) : 
Unable to execute statement 'SELECT COUNT(*) FROM test WHERE ( (id IN 'AB') ) '.
Server says 'syntax error, unexpected STRING, expecting '(' in: "select count(*) from test where ( (id in 'AB'"' [#42000].

我猜是 MonetDB.R具体问题。就是不知道怎么规避。

谢谢。

最佳答案

首先,感谢这里合作产生的非常好的错误报告。我以前遇到过这个问题,它应该在 R-Forge ( https://r-forge.r-project.org/R/?group_id=1534 ) 上可用的软件包的 0.8.1 版中修复。

关于r - 如何正确地使用 %in% 对 monet.frame 进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20229981/

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