r - 在 R 中处理大数据时遇到困难

标签 r

我目前正在使用recommenderlab包制作具有8k用户和200k项目的推荐系统。

在使用recommenderlab的功能之前,我在将数据框转换为真实评分矩阵时遇到了麻烦。

    item_idx                    mem_idx         rating
1   00600015987465341234f7dae4  534122168382b   4
2   0060001660924533ad0cd443e1  53d79f413e3aa   5
3   006000195520453d7ac28e4b4b  53d79f413e3aa   5
4   0060001986642536d6fc77d269  535146eb5af95   4
5   00708969975005409278f828f3  540927366f478   5

这是我的数据框的一部分,所有 (item_idx, mem_idx) 对都是不同的。

mat <- tapply(df$rating, list(df$mem_idx, df$ID), FUN=function(x) x)

我尝试使用此代码将数据帧转换为矩阵,有时会成功,但通常会出现这样的错误。

Error: cannot allocate vector of size 1.1 Gb

在成功的案例中,

r <- as(mat, "realRatingMatrix")

我应用此代码使其成为 realRatingMatrix 但我总是因为这个错误而失败

Error in which(x == 0, arr.ind = TRUE) : 
  error in evaluating the argument 'x' in selecting a method for function 'which': Error: (list) object cannot be coerced to type 'double'

任何知道如何避免这些错误之一的人,请帮助我。

最佳答案

将数据帧转换为稀疏矩阵,然后转换为 realRatingMatrix 类

itm <- factor(data[,1])
mem <- factor(data[,2])

# sparsematrix
s <- sparseMatrix(
    as.numeric(itm), 
    as.numeric(mem),
    dimnames = list(
            as.character(levels(itm)), 
            as.character(levels(mem))),
    x = data[,3])

#convert to realRatingMatrix class
rm <- new("realRatingMatrix",data=s)

关于r - 在 R 中处理大数据时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27185973/

相关文章:

r - data.frame 中的错误,未使用的参数

换字规则

R:使用 MaxLik() 包估计 mle 时出错

r - 从源代码安装包?

r - mclapply() 的性能明显比 lapply() 差。我怎样才能加快速度?

r - 条件滚动平均值

c++ - 如何在 Eclipse 中调试 R 包(使用 C 和 C++ 代码)?

r - R的system.time如何工作? [复制]

r - data.table 通过表达式快速访问列

r - 如何使用 sapply 结果更新数据框变量?