使用 sqldf 包读取 table 时遇到问题 (R)

Having trouble reading table using sqldf package (R)

背景:

我可以使用 read.csv() 函数从互联网上成功提取特定数据集(如下面的代码所示)。但是,当我尝试使用 sqldf 包来加速使用 read.csv.sql() 的过程时,它会产生错误。我尝试了各种解决方案,但似乎无法解决这个问题。

我可以使用以下代码成功提取数据并创建我想要的 read.csv() 数据框:

ce_data <- read.csv("http://download.bls.gov/pub/time.series/cx/cx.data.1.AllData", 
                     fill=TRUE, header=TRUE, sep="")

为了在我的机器上测试 sqldf 的功能,我成功​​地测试了 read.csv.sql(),方法是使用以下代码将数据读入 1 个变量而不是所需的 5 个变量:

library(sqldf)

ce_data_sql1 <- read.csv.sql("http://download.bls.gov/pub/time.series/cx/cx.data.1.AllData", 
                         sql = "select * from file")

为了产生我使用 read.csv() 但利用 read.csv.sql() 的速度得到的结果,我尝试了以下代码:

ce_data_sql2 <- read.csv.sql("http://download.bls.gov/pub/time.series/cx/cx.data.1.AllData", 
                             fill=TRUE, header=TRUE, sep="", sql = "select * from file")

不幸的是,它产生了这个错误:

trying URL 'http://download.bls.gov/pub/time.series/cx/cx.data.1.AllData' Content type 'text/plain' length 24846571 bytes (23.7 MB) downloaded 23.7 MB

Error in sqldf(sql, envir = p, file.format = file.format, dbname = dbname, : unused argument (fill = TRUE)

我尝试了各种方法来解决错误,使用 sqldf 文档,但没有成功。

问题:

是否有解决方案,我可以使用 read.csv.sql() 阅读此 table 中所需的 5 个变量?

您将其作为单个变量读入的原因是您没有正确指定原始文件的分隔符。 尝试以下操作,其中 sep = "\t",以制表符分隔:

ce_data_sql2 <- read.csv.sql("http://download.bls.gov/pub/time.series/cx/cx.data.1.AllData", 
sep = "\t", sql = "select * from file")

您在最后一个示例中遇到的错误:

Error in sqldf(sql, envir = p, file.format = file.format, dbname = dbname, : unused argument (fill = TRUE)

是因为read.csv.sql不接受fill的说法。