R:如何分配大向量

时间:2018-11-24 19:30:36

标签: r

我当前正在使用aws ec2运行我的r程序。我有一台相当大的机器(g3.4xlarge 16 47 122 GiB内存)。

我安装了R studio,数据集约为200万行。 (〜1.5 GB ish)

我按如下方式细分了数据集:

intrain<- createDataPartition(overall_data$churn,p=0.7,list=FALSE)
set.seed(2017)
training<- overall_data[intrain,]
testing<- overall_data[-intrain,]

然后我将以下代码应用于我的测试数据。我的测试数据约为60万行。所以它是非常小的imo。

testing = sapply(testing, function(col) length(unique(col)))
testing=Filter(function(col)(length(unique(col))>1), testing)
testing = subset(testing, select = -c(payer_account_id))
testing[sapply(testing, is.character)] <- lapply(testing[sapply(testing, is.character)],as.factor)

但是,当我运行程序时

LogModel <- glm(churn ~ .,family=binomial(link="logit"),data=testing)

它告诉我

> LogModel <- glm(churn ~ .,family=binomial(link="logit"),data=testing)
Error: cannot allocate vector of size 250.3 Gb

我甚至尝试使用更大的ec2实例,但这也失败了。我在Windows笔记本电脑上尝试过,这就是我所做的

> memory.limit(size=1800)
[1] 16222
Warning message:
In memory.limit(size = 1800) : cannot decrease memory limit: ignored
> memory.limit()
[1] 16222
> memory.limit(size = 56000)
[1] 56000
> LogModel <- glm(churn ~ .,family=binomial(link="logit"),data=testing)
Error: cannot allocate vector of size 250.1 Gb

正因如此,我很困惑为什么R无法处理如此小的数据集。我提到了其他stackoverflow指南,但似乎没有什么用。

我可以问是否有人解决了这个问题?

0 个答案:

没有答案