2010-10-19 75 views
4

可能重複:
Quickly reading very large tables as dataframes in R如何在R讀取大型數據集

嗨,

試圖讀取大型數據集R中控制檯顯示的follwing錯誤:

data<-read.csv("UserDailyStats.csv", sep=",", header=T, na.strings="-", stringsAsFactors=FALSE) 
> data = data[complete.cases(data),] 
> dataset<-data.frame(user_id=as.character(data[,1]),event_date= as.character(data[,2]),day_of_week=as.factor(data[,3]),distinct_events_a_count=as.numeric(as.character(data[,4])),total_events_a_count=as.numeric(as.character(data[,5])),events_a_duration=as.numeric(as.character(data[,6])),distinct_events_b_count=as.numeric(as.character(data[,7])),total_events_b=as.numeric(as.character(data[,8])),events_b_duration= as.numeric(as.character(data[,9]))) 
Error: cannot allocate vector of size 94.3 Mb 
In addition: Warning messages: 
1: In data.frame(user_msisdn = as.character(data[, 1]), calls_date = as.character(data[, : 
    NAs introduced by coercion 
2: In data.frame(user_msisdn = as.character(data[, 1]), calls_date = as.character(data[, : 
    NAs introduced by coercion 
3: In class(value) <- "data.frame" : 
    Reached total allocation of 3583Mb: see help(memory.size) 
4: In class(value) <- "data.frame" : 
    Reached total allocation of 3583Mb: see help(memory.size) 

有誰知道如何閱讀大型數據集? UserDailyStats.csv的大小約爲2GB。

+1

相關:http://stackoverflow.com/questions/1875795/best-practices-for-storing-and-using-data-frames-too-large-for-memory和http://stackoverflow.com/questions/3340568 /設置大數據庫在mysql-for-analysis-in-r – 2010-10-19 12:21:42

+0

另請參閱:http://yusung.blogspot.com/2007/09/dealing-with-large-data-set- in-r.html和http://ff.r-forge.r-project.org/bit&ff2.1-2_WU_Vienna2010.pdf – 2010-10-19 12:22:25

回答

13

肯定的:

  1. 獲取更大的計算機,特別是更多的RAM
  2. 運行64位操作系統,參見圖1)關於更多的內存,現在你可以使用它
  3. 只讀列你需要
  4. 讀取更少的行
  5. 以二進制讀取數據而不是重新解析2gb(這是非常低效的)。

R網站上還有一個manual for this

1

您可以使用colClasses嘗試在read.csv調用中指定數據類型。

data<-read.csv("UserDailyStats.csv", sep=",", header=T, na.strings="-", stringsAsFactors=FALSE, colClasses=c("character","character","factor",rep("numeric",6))) 

雖然這種規模仍可能是有問題的,並且沒有留給你可能需要做任何分析的存儲大量的數據集。使用64位計算添加RAM &將提供更多的靈活性。

1

如果這是從控制檯輸出,然後您讀取數據,但轉換有問題。

如果您以交互方式工作,然後read.csv將您的數據保存爲save(data, file="data.RData"),請關閉R,運行新的實例,使用load("data.RData")加載數據,並查看它是否失敗。

但是,從這個錯誤消息我看到你有轉換的問題,所以你應該看看。