我最近开始使用SQLite存储我的原始生物数据(我有几种形式的原始数据输出,并发现它是查询和链接与同一试验相关的表的一种非常有用的方法)。我现在想从不同的文件中提取原始数据,将其合并到一个数据框中,然后对其进行处理(例如,我想将我的日期转换为Julian日期并根据我已有的日期创建新变量)。
此链接提供了一个很好的示例,说明如何组合同一数据库中的文件:
Importing FIles with Extension .sqlite into R
我设法用它来创建我想要的数据帧。但是(这是我缺乏经验的地方)结果数据框没有可识别的标题:
> con <- dbConnect(drv, dbname="...PreliminaryFlightTrial.db")
> tables <- dbListTables(con)
> tables.excl <- tables[tables != "sqlite_sequence"]
> lDataFrames <- vector("list", length=length(tables.excl))
> for (i in seq(along=tables.excl)) {
+ lDataFrames[[i]] <- dbGetQuery(conn=con, statement=paste("SELECT * FROM '", tables.excl[[i]], "'", sep=""))
+ }
> names(lDataFrames)
NULL
如果有人能指出我的错误,我会非常感激。我确实尝试添加header = T并运行代码,但我仍然无法访问名称:
for(i in seq(along = tables.excl)){ + DataFrames [[i]]&lt; - dbGetQuery(conn = con,statement = paste(“SELECT * FROM'”,tables.excl [[i]],“'”,sep =“”,header = T)) +} 名字(DataFrames) NULL
我确实尝试使用谷歌搜索,但没有走得太远 - 也许我正在搜索错误的条款?
非常感谢
答案 0 :(得分:0)
无需阅读R中的整个表格,只需获取您可以使用dbListFields
代替
library(RSQLite)
drv <- dbDriver("SQLite")
con <- dbConnect(drv, dbname = ":memory:")
df1 <- data.frame(a = 1L, b = "hello")
df2 <- data.frame(c = 1:10, d = letters[1:10])
dbWriteTable(con, name = "df1", value = df1, row.names = FALSE)
dbWriteTable(con, name = "df2", value = df2, row.names = FALSE)
tables <- dbListTables(con)
lapply(tables, dbListFields, conn = con)
## [[1]]
## [1] "a" "b"
## [[2]]
## [1] "c" "d"