【问题标题】:Any ideas on how to debug this FF error?有关如何调试此 FF 错误的任何想法?
【发布时间】:2012-09-05 14:00:34
【问题描述】:

我正在尝试使用 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 行,指定列数据类型并且总是出现相同的错误。

提前致谢。

【问题讨论】:

标签: r csv


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-29
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多