R中多个db3文件的循环代码

时间:2016-10-18 09:22:22

标签: r loops

我试图导入一些.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)
}

你能提供的任何帮助都会很棒!

1 个答案:

答案 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}}时,你又回去重新创建了它,扔掉了你刚才所做的事情。