错误:无法分配大小为X Gb Rstudio的向量

问题描述

以前从未遇到过这个问题,但是现在我编写的任何代码都一直存在。

> sessionInfo()
R version 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)

Matrix products: default

Random number generation:
 RNG:     Mersenne-Twister 
 normal:  Inversion 
 Sample:  Rounding 
      

我有一个1482236个观测值和52个变量的数据集。其中35个是因子,19个是数字。我的一些因素是巨大的,有很多层次: 这些是最高的:

forename: 114942 levels
surname: 201988 levels
postcode:793876 levels
partnername: 9164 levels

我尝试了不同的功能,但由于相同的原因它们均无法正常工作: 错误:无法分配大小为X的向量

  1. 类变量的相关性:
df <- DFOld %>% dplyr::select_if(~class(.)=='factor') #create a dataframe just for factors

##function to get chi square p value and Cramers V

f = function(x,y) {
  tbl = df %>% dplyr::select(x,y) %>% table()
  chisq_pval = round(chisq.test(tbl)$p.value,4)
  cramV = round(cramersV(tbl),4) 
  data.frame(x,y,chisq_pval,cramV) }

##create unique combinations of column names


df_comb = data.frame(t(combn(sort(names(df)),2)),stringsAsFactors = F)
df_res = map2_df(df_comb$X1,df_comb$X2,f)
Error: cannot allocate vector of size 7.9 Gb

2。小鼠插补

impute <- mice(df,m=3,nnet.MaxNWts=3000,seed=123,meth='cart') #,meth='cart'
Error: cannot allocate vector of size 100.1 Gb

3。 XgBoostModel

library(xgboost)
set.seed(123)
caret.cv.Test <- train(HasProduct ~.,data=roseTest
                       [,!(colnames(roseTest)%in% c("id"
))],method = "xgbTree",tune.gridV0= tune.grid,trControl = train.control,)

Error: cannot allocate vector of size 100.1 Gb

我试图每次考虑考虑一半的数据集,以减少观察次数,但这没有区别。 我也尝试扩展内存:

> memory.size()
[1] 29882.43
> memory.limit() 
[1] 32447
> memory.limit(size=500000)
[1] 5e+05

它没有任何作用

我也清理了垃圾

> gc()
            used   (Mb) gc trigger    (Mb)   max used    (Mb)
Ncells   4570479  244.1   12169265   650.0   13298034   710.2
Vcells 144700496 1104.0 5750893687 43875.9 5988830217 45691.2

什么都没有创造任何差异,唯一起作用的是排除了这些变量:

forename: 114942 levels
surname: 201988 levels
postcode:793876 levels
partnername: 9164 levels

您知道是否有办法在不杀死RAM的情况下保留这些变量吗?

请提供帮助,

欢呼

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)