对带页脚的数据使用 sqldf

Using sqldf on data with footer

我有一些数据看起来像这样:

myDat <- data.frame(V1=rnorm(1000), 
                    V2=sample(LETTERS, 1000, replace=TRUE), 
                    V3=sample(1:1000, 1000))
write.table(myDat, file="myData.txt", sep="|", quote=FALSE, col.names=FALSE, row.names=FALSE)
write("00001000 RECORDS", file="myData.txt", append=TRUE) # This is the annoying footer

请注意底部的页脚始终存在.. 我想使用 sqldf 阅读它。像这样:

f <- file("myData.txt")
hkFile <- sqldf("SELECT * FROM f", dbname=tempfile(), 
                file.format=list(header=FALSE, sep="|", eol="\n"))

由于附加到数据的页脚,我一直收到此错误:

Error in .local(conn, name, value, ...) : 
  RS_sqlite_import: myData.txt line 1001 expected 3 columns of data but found 1

是否有绕过页脚的简单方法?将数据复制到临时文件不是一种选择,因为我的一些数据集是 ~6GB

仅仅因为文件很大并不一定意味着您不能复制它。

这会完成,但它会透明地复制文件。

my <- read.csv.sql("myData.txt", sql = "select * from file", sep = "|", 
  header = FALSE, filter = "head -n -1")

在 Windows 上,它假定安装了 Rtools,在这种情况下,通常它能够找到 head,但如果没有给出路径,例如filter = "C:/Rtools/bin/head -n - 1"。如果在 Linux 上,那么 head 应该已经可用。