0

私は最近、SQLite を使用して生の生物学的データを保存し始めました (生データの出力形式がいくつかあり、同じ試験に関連するテーブルを照会およびリンクするのに非常に便利な方法であることがわかりました)。さまざまなファイルから生データを引き出し、それをデータフレームに結合してから作業したいと考えています (たとえば、日付をユリウス日付に変換し、既存のものに基づいて新しい変数を作成したいと考えています)。

このリンクは、同じデータベースにあるファイルを結合する方法の優れた例を示しました。

拡張子が .sqlite のファイルを 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]] <- dbGetQuery(conn=con, statement=paste("SELECT * FROM '", tables.excl[[i]], " '", sep="",header=T)) + } 名 (データフレーム) NULL

グーグルを試してみましたが、あまりうまくいきませんでした。間違った用語を検索しているのかもしれません。

どうもありがとう

4

1 に答える 1

0

dbListFields代わりに使用できる colnames を取得するためだけに、R でテーブル全体を読み取る必要はありません

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"
于 2014-02-05T19:15:08.297 に答える