【问题标题】:(R language) How to create empty ff data frame(R语言)如何创建空的ff数据框
【发布时间】:2015-02-08 05:49:42
【问题描述】:

每个人。

我想要做什么

在 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排是这样的,没用。

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

关键是写file=ff 函数似乎需要明确指示属性。 (参考:Import text file using ff package

谢谢大家!

我的环境

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

【问题讨论】:

  • “尝试在没有维度的对象上设置 'rownames'”表示您的 csv 文件中没有任何内容。这种情况下,不要添加数据(ff是大数据,不是无数据)

标签: r dataframe ff


【解决方案1】:

如果打算从多个文件创建一个大的 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

【讨论】:

  • 谢谢,阿克伦。我试过代码。但我得到了一个错误(原帖已更新)。我会努力解决的。
  • @dixhom 您能否尝试读取单个数据集并查看错误是否仍然存在。?即read.csv.ffdf(filelist[1], header=TRUE)
  • 代码无效。但是,我设法解决了最初的问题。主帖已更新。
猜你喜欢
  • 2018-07-06
  • 2014-02-11
  • 1970-01-01
  • 2016-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多