将函数应用于大型数据集

时间:2016-03-14 11:47:39

标签: r

我在R中读到了一个大型数据集 我想在其上应用Unique()函数,以便我可以更好地使用它,但是当我尝试这样做时,我得到了这个提示:

clients <- unique(clients)
Error: cannot allocate vector of size 27.9 Mb

所以我试图通过这样做逐部分地应用这个功能:

clientsmd<-data.frame()
n<-7316738  #Amount of observations in the dataset
t<-0
for(i in 1:200){
  clientsm<-clients[1+(t*round((n/200))):(t+1)*round((n/200)),]
  clientsm<-unique(clientsm)
  clientsmd<-rbind(clientsm)
  t<-(t+1) }

但我明白了:

 Error in `[.default`(xj, i) : subscript too large for 32-bit R

我被告知我可以使用“ff”或“bigmemory”(或任何其他)等软件包更容易,但我不知道如何将它们用于此目的。

我感谢任何方向,是告诉我为什么我的代码不起作用,或者说我怎么能利用这个软件包。

3 个答案:

答案 0 :(得分:1)

客户端是data.table的data.frame吗?与data.frame

相比, data.table 可以处理大量数据
library(data.table)

clients<-data.table(clients)

clientsUnique<-unique(clients)

duplicateIndex <-duplicated(clients) 

将提供重复的行。

答案 1 :(得分:1)

如下所示增加内存限制,然后尝试执行。

 memory.limit(4000)   ## windows specific command

答案 2 :(得分:0)

您可以使用dplyr包中的不同功能。

功能 - df %>% distinct(ID)

其中ID在您的数据框中是唯一的。