0

我正在尝试使用 FF 读取 R 中的大型 CSV 文件。

我首先使用 csv.read 阅读了代码的前 10 行,以确保我没有做任何愚蠢的事情:

trainFileName = "./TrainingSet/SplitFiles/7_train_data.csv"
trainSet <- read.csv(trainFileName, header=TRUE, nrows=10)
length(trainSet[1,])
length(trainSet[,1])

这告诉我:

> trainFileName = "./TrainingSet/SplitFiles/7_train_data.csv"
> trainSet <- read.csv(trainFileName, header=TRUE, nrows=10)
> length(trainSet[1,])
[1] 4505
> length(trainSet[,1])
[1] 10

到目前为止,一切都很好。现在我尝试用 FF 重复这个壮举:

trainSet <- read.csv.ffdf(file = trainFileName, header = TRUE, nrows = 10, VERBOSE = TRUE)

在这里我们失败了:

read.table.ffdf 1..10 (10)  csv-read=0.552sec
Error in if (dfile ==         getOption("fftempdir")) finalizer <- "delete" else finalizer <- "close" : argument is of length zero
Error in setwd(cwd) : character argument expected

我在任何地方都找不到有关此错误的更多信息,而且我看不到如何做更简单的事情,所以在深入研究 FF 源代码之前,有人有什么想法吗?

我尝试加载整个文件而不是前 10 行,指定列数据类型并且总是出现相同的错误。

提前致谢。

4

1 回答 1

0

是的,你有太多的列。在ff中,每一列都是一个文件。您打开的文件数量不能超过文件系统同时打开的数量

如果您打开的文件太多,要查看 ff 将失败的位置,请运行以下命令:

require(ff)
x <- list()
for(i in 1:100000){
  print(i)
  x[[i]] <- ff(rnorm(10))
  open(x[[i]] )
}

对我来说,这在 1022 个打开的文件中失败了,但我还有其他一些打开的文件。

于 2012-09-05T20:57:25.480 回答