我有一个向量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")sqliteSendQuery中的错误(conn,语句,bind.data):RAW()只能应用于“raw”,而不能应用于“双”
我不明白我做错了什么。
发布于 2015-11-12 17:04:33
我相信错误在您的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$maxSc是data.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才能工作。
https://stackoverflow.com/questions/33676537
复制相似问题