gpt4 book ai didi

R- sqldf错误原始与双

转载 作者:行者123 更新时间:2023-12-02 00:56:59 24 4
gpt4 key购买 nike

我有一个矢量 lims,带有分数限制:

 [1]  0.000000  7.025894  9.871630 12.411131 15.155998 18.099176 21.431354 25.391163 30.616550 40.356630

我创建了一个表格来对其他客户进行分类:

lims[1]<- -0.00001 
a<-data.frame(lims[2:10])
colnames(a)<-'maxSc'
a<-rbind(a, 100)
lims<-data.frame(lims)
lims$maxSc<-a
colnames(lims)<-c('minSc', 'maxSc')


> class(lims)
[1] "data.frame"

所以我的结果是:

> lims
minSc maxSc
1 -0.000010 7.025894
2 7.025894 9.871630
3 9.871630 12.411131
4 12.411131 15.155998
5 15.155998 18.099176
6 18.099176 21.431354
7 21.431354 25.391163
8 25.391163 30.616550
9 30.616550 40.356630
10 40.356630 100.000000

我想根据这些限制和字段 sc 对另一个表(火车)进行分类:

>class(train$sc)
[1] "numeric"
> class(train$target)
[1] "integer"

但是当我运行以下命令时出现错误:

library(sqldf)
sqldf("Select b.minSc, b.maxSc, count(*) as total, sum(target) as compra
from train a left join lims b
on a.sc<=b.maxSc and a.sc>b.minSc
group by b.minSc, b.maxSc")

Error in sqliteSendQuery(conn, statement, bind.data) : RAW() can only be applied to a 'raw', not a 'double'

我不明白我做错了什么。

最佳答案

我认为错误在于您的 lims 对象。

lims <- c(0.000000,  7.025894,  9.871630, 12.411131, 
15.155998, 18.099176, 21.431354, 25.391163,
30.616550, 40.356630)

lims[1]<- -0.00001
a<-data.frame(lims[2:10])
colnames(a)<-'maxSc'
a<-rbind(a, 100)
lims<-data.frame(lims)
lims$maxSc<-a
colnames(lims)<-c('minSc', 'maxSc')
sapply(lims, class)

# minSc maxSc
# "numeric" "data.frame"

请注意 lims$maxScdata.frame 类型。那么以下查询将不起作用并导致您发布的错误。

library(sqldf)
sqldf("select * from lims")

但是,如果将 lims$maxSc 设置为 a[,1] 则不会出现错误。

lims$maxSc<-a[,1]
sapply(lims,class)
# minSc maxSc
# "numeric" "numeric"
sqldf("select * from lims")

data.frame 的列不能属于 data.frame 类,sqldf 才能工作。

关于R- sqldf错误原始与双,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33676537/

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