我试图导入一些.db3文件,然后将它们绑定在一起进行进一步分析。我没有输入单个.db3文件的麻烦,但我的rbind无法正常工作,尽管它适用于.csv文件。我哪里出错?
df <- c()
for (x in list.files(pattern="*.db3")){
sqlite <- dbDriver("SQLite")
mydb <- dbConnect(sqlite, x)
dbListTables(mydb)
results <- dbSendQuery(mydb, "SELECT * FROM gps_data")
data = fetch(results, n = -1)
data$Label <- factor(x)
data <- rbind(df, data)
}
你能提供的任何帮助都会很棒!
答案 0 :(得分:2)
让我们仔细看看循环结束时的df <- c()
for (x in list.files(pattern="*.db3")){
sqlite <- dbDriver("SQLite")
mydb <- dbConnect(sqlite, x)
dbListTables(mydb)
results <- dbSendQuery(mydb, "SELECT * FROM gps_data")
data = fetch(results, n = -1)
data$Label <- factor(x)
data <- rbind(df, data)
}
调用:
df
您已创建对象data
,然后您将data
绑定到其末尾并使用它来覆盖现有df
(注意data
hasn没改变。大。现在,您的循环再次启动,创建一个新的df
对象,并将其绑定到.... df <- rbind( df, data )
。卫生署!这是一个简单的错误,但你绑定的东西是错误的顺序。尝试将最后一行更改为:
df
看看它是怎么回事。
你将采取不同的做法是一遍又一遍地覆盖data
,每次都要大一些。当你覆盖{{1}}时,你又回去重新创建了它,扔掉了你刚才所做的事情。