RSQLite中的因素

Ari*_*man 4 sqlite r rsqlite

我一直无法找到有关RSQLite如何处理因素的文档.从快速测试(见下文)看,它们看起来像是转换为角色.

问题1:有没有办法将它们作为因素保存?我可以想到一些kludgy方式(主要涉及.Rdata存储因子级别的单独的表或文件),但似乎应该有一个标准,因此更易于维护的方式.

问题2:如果不是RSQLite,比其他一些数据库或类似数据库的包?我的用例很简单:附加一堆大的(2-5mm行X 550列)data.frames,因为每个都被处理以构建一个巨大的数据库,然后能够只选择我想从该数据库中带来的行进入data.table并继续努力.

library(RSQLite)
# Create
db <- dbConnect( SQLite(), dbname="~/temp/test.sqlite" )
# Write test
set.seed(1)
testDat <- data.frame(x=runif(1000),y=runif(1000),g1=sample(letters[1:10],1000,replace=TRUE),g2=rep(letters[1:10],each=100),g3=factor( sample(letters[1:10],1000,replace=TRUE) ))
if(dbExistsTable(db,"test")) dbRemoveTable(db,"test")
dbWriteTable( conn = db, name = "test", value = testDat, row.names=FALSE )
# Read test
testRecovery <- dbGetQuery(db, "SELECT * FROM test")
testSelection <- dbGetQuery(db, "SELECT * FROM test WHERE g3=='h' OR g3=='e' ")
# Close
dbDisconnect(db)
Run Code Online (Sandbox Code Playgroud)

Dir*_*tel 5

对我来说看起来很简单:factor只有S和R知道的概念.完全停止.

因此,要将它们放入数据库并返回,您需要编写映射器.要么是简单化又要做所有事情as.character(假设大多数数据库后端都会像R一样对哈希字符串进行哈希处理).或者以数据库为中心,将因子分成(无符号)(可能是短整数)整数和标签.