2

我正在尝试使用read.csv()命令,但我不了解colClasses运行编码的部分。有没有人解释它是什么,并给我简单编码的例子read.csv()

另外,如果我运行我的编码read.csv(),我会得到一个错误

> object of type 'closure' is not subsettable

这是什么类型的错误?上次我运行我的代码时,它工作了,但现在我明白了。我不确定我应该在这里做些什么改变。这是我的代码:

Precipfiles[1:24] <- list.files(pattern=".csv")
> DF <- NULL
> for (f in Precipfiles[1:24]) {
    data[1:24]<-read.csv(f,header=T,sep="\t",na.string="",colClasses="character")
    DF[1:24]<-rbind(DF,data[1:24])
}

基本上,我加载所有数据并将它们放在一起,但由于遇到上面列出的问题,我无法使用merge()命令。

我认为我不应该使用colClasses="character",因为我使用的数据都是 200 x 200 矩阵中的数字。我必须将 24 个数据文件放在一起。

如果您有任何建议并建议改进此编码,请告诉我。感谢您的所有帮助。

4

1 回答 1

5

你真的不需要[1:24]在每个作业中,这就是导致你的问题的原因。您被分配到某个描述的索引向量的子集。

尝试分配给 时的错误消息data[1:24],而data不是以前分配的(在您以前的用法中(您提到的工作),data可能是 alistdata.frame您已创建。)。因此data是一个函数(用于加载与包关联的数据,请参阅?data),您看到的错误是说(一个函数包括一个闭包)

我会建议像

Precipfiles <- list.files(pattern=".csv")
DFlist <- lapply(Precipfiles, read.table, sep = '\t', 
                  na.string = '', header = TRUE)
bigDF <- do.call(rbind, DFlist)

# or, much faster using data.table 
library(data.table)
bigDF <- rbindlist(DFlist)
于 2013-02-24T22:14:01.410 回答