RSQLite类型问题

时间:2015-06-11 20:50:40

标签: r sqlite rsqlite

这与RSQLite typecasting issue有些相关。

考虑以下示例:

> require(RSQLite)
> DB = dbConnect(RSQLite::SQLite(),":memory:")

> dbSendQuery(DB,"create table tbl (X1 INT, X2 INT)")
> dbSendQuery(DB,"insert into tbl values (1,1),(2,0.1)")

> all.DF <- dbGetQuery(DB,"select *, typeof(X2) from tbl")
> part.DF <- dbGetQuery(DB,"select *, typeof(x2) from tbl where X1 NOT IN (1)")

调用

> part.DF

给出

X1  X2   typeof(x2)
2   0.1  real

> all.DF

给出

X1 X2 typeof(X2)
1  1  integer
2  0  real

你看到了问题,对吗?在part.DF中,第二个值正确为0.1,而在all.DF中,第二个值为0,尽管类型被正确识别为&#34; real&#34;!这非常令人困惑 - 类型是正确的,但从SQLite到R值0.1的某个地方显然变成了整数:

> str(all.DF)

'data.frame':   2 obs. of  3 variables:
 $ X1        : int  1 2
 $ X2        : int  1 0
 $ typeof(X2): chr  "integer" "real"

在part.DF中,它被正确地保存为&#34;真实&#34;

> str(part.DF)

'data.frame':   1 obs. of  3 variables:
$ X1        : int 2
$ X2        : num 0.1
$ typeof(x2): chr "real"

为什么?

0 个答案:

没有答案