0

每个人。

我正在尝试做的事情

在 R 中创建一个空的 ff data.frame。

细节

我想在 R 中读取多个 csv 文件,将它们绑定在一起并创建一个大 data.frame。由于数据非常庞大,我正在使用 ff 包。

这是我的代码。

file_list = list.files(pattern="*.csv")
library(ff)
for(i in seq_along(length(file_list)){
  ffdf <- read.csv.ffdf(x=ffdf, file=file_list[i], header=T)
}  

但是,我收到以下错误。

Error in `rownames<-`(x, value) : 
  attempt to set 'rownames' on an object with no dimensions

我在 Google 和 Stackoverflow 中搜索了错误消息,但没有得到有用的结果。有谁知道如何处理这个问题?

更新 (15/2/16)

以下代码有效。

library(ffbase)
library(ff)
file_list = list.files(pattern="*.csv")
lst <- lapply(file_list, function(x) read.csv.ffdf(file=x,header=TRUE))
ff1 <- Reduce(function(x,y) ffdfappend(x,y, adjustvmode=F), lst)

一开始,lappy row是这样的,没用。

lst <- lapply(file_list, read.csv.ffdf, header=TRUE)

关键是写作file=。似乎ff函数需要明确指示属性。(参考:使用ff包导入文本文件

感谢大家!

我的环境

  • Windows 7 家庭高级服务包 1
  • R工作室0.98.1091
  • R 版本 3.1.2 (2014-10-31)
4

1 回答 1

0

如果打算从多个文件创建一个大的 ffdf 对象,

library(ffbase)
library(ff)
ff1 <- Reduce(function(x,y) ffdfappend(x,y, adjustvmode=F), lst)
dim(ff1) #from the example
#[1] 78  7

在哪里

lst <- lapply(file_list, read.csv.ffdf, header=TRUE)

数据

使用示例数据集?read.csv.ffdf

 x <- data.frame(log=rep(c(FALSE, TRUE), length.out=26),
   int=1:26, dbl=1:26 + 0.1
 , fac=factor(letters), ord=ordered(LETTERS)
 , dct=Sys.time()+1:26, dat=seq(as.Date("1910/1/1"), length.out=26, by=1))
 x <- x[c(13:1, 13:1),]
 csvfile <- tempPathFile(path=getOption("fftempdir"), extension="csv")
 write.csv(x, file=csvfile, row.names=FALSE)
 y <- read.csv(file=csvfile, header=TRUE)
 y
 cat("Read csv with header\n")
 ffx <- read.csv.ffdf(file=csvfile, header=TRUE)
 lst <- lapply(1:3, function(x) read.csv.ffdf(file=csvfile, 
       header=TRUE))
 dim(lst[[1]])
 #[1] 26  7
于 2015-02-08T06:09:31.450 回答