有关如何调试此FF错误的任何想法?

时间:2012-09-05 14:00:35

标签: r csv

我正在尝试使用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行,指定列数据类型并始终保持相同的错误。

提前致谢。

1 个答案:

答案 0 :(得分:0)

是的,你的栏目太多了。在ff中,每列都是一个文件。您无法打开比文件系统可以同时打开的文件更多的文件

如果你打开了太多文件,看看ff会失败的地方运行:

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

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