2014-02-05 56 views
0

我最近開始使用SQLite來存儲我的原始生物數據(我有幾種形式的原始數據輸出,並且發現它是查詢和鏈接表的一種非常有用的方式涉及相同的試驗)。我現在想從不同文件中提取原始數據,將其合併到一個數據框中,然後對其進行處理(例如,我想將我的日期變成Julian日期並根據已有的數據創建新變量)。將擴展名爲.sqlite的文件導入R - 並讀取標題名稱

此鏈接給的如何是在同一個數據庫文件合併一個很好的例子:

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 

我會非常感激,如果有人能指出我的錯誤。我也嘗試添加標題= T和代碼運行,但我仍然無法訪問的名字:

的(我在SEQ(沿= tables.excl)){ + DataFrames [我] < - dbGetQuery(conn = con,statement = paste(「SELECT * FROM'」,tables.excl [[i]],「'」,sep =「」,header = T)) +} names(DataFrames) NULL

我嘗試了谷歌搜索,但沒有得到很遠 - 也許我在尋找錯誤的條款?

非常感謝

+0

謝謝dickoa。我會嘗試你的建議! – user3276563

回答

0

無需讀取R中的整個表只是爲了讓colnames可以使用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" 
相關問題