R展开矩阵,但有错误:无法分配给不存在的元素

问题描述

Win10 Build 18363.836; R版本R-4.0.2; RStudio版本1.3.1093;处理器:Intel i7-7500U;物理内存:16GB;硬盘:500GB SSD

我正在研究Instacart Market Basket数据集。为了使用 R包构建推荐模型,我需要创建一个带有customer_id和product_name的矩阵以进行协作过滤。

加载数据后,我合并并过滤了数据以准备训练集。

data_train = orders %>% 
  filter(eval_set=='train') %>% 
  left_join(order_products) %>%
  left_join(products) %>%
  mutate(actual=1) %>%
  select(user_id,order_id,product_id,product_name,actual)

我试图建立这样的矩阵。

data_train %>% 
  select(user_id,product_name) %>% 
  mutate(n=1)  %>%
  arrange(product_name) %>% 
  pivot_wider(names_from = "product_name",values_from = "n",values_fill=0)

但收到错误消息:

错误无法分配给不存在的元素。 X 位置2、3、4、5、6等不存在。我只有1个元素。

我无法解决该问题,因此我尝试了另一种根据此article来构建矩阵的方法

ratings_matrix <- train01 %>%
  select(user_id,product_name) %>% 
  mutate(value = 1) %>%
  spread(product_name,value,fill = 0) %>%
  select(-user_id) %>%
  as.matrix() %>%
  as("binaryratingMatrix")
ratings_matrix

现在显示

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

所以我通过以下方式扩展了内存限制:

memory.limit(50000)

然后,我检查了系统,它显示了所有驱动器的总页面文件43377MB(作为虚拟内存),远远超过R要求生成矩阵。但是仍然收到相同的错误消息。

我还尝试将火车数据分成四部分,只是将其转换为25%,但仍然出现错误

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

这甚至远远少于现在笔记本电脑上的可用物理内存。而且由于我需要对数据进行协作过滤,因此最好将矩阵整体生成。谁能帮助我找出我在编码上犯的错误,或者教我另一种生成矩阵的方法?谢谢。

解决方法

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...