【发布时间】:2017-06-19 11:04:54
【问题描述】:
关注我的question 我使用以下代码:
dist<-c('att1','att2','att3','att4','att5','att6')
p1<-c('att1','att5','att2')
p2<-c('att5','att1','att4')
p3<-c('att3','att4','att2')
p4<-c('att1','att2','att3')
p5<-c('att6')
....
p32<-c('att35','att34','att32')
在实际情况下可以有 1024 个向量。
我想找到所有相关的p,它们的统一将是 dist 的最大组成部分。在这种情况下,解决方案是p1、p3、p5。我想选择最少的p。另外,如果没有办法覆盖所有的 dist 组件,所以我想选择具有最少向量 (p) 的最大覆盖。
N = 32
library(qdapTools)
library(dplyr)
library(data.table)
## generate matrix of attributes
attribute_matrix <- mtabulate(list(p1, p2, p3, p4, p5,...,p32))
library (bigmemory)
## generate matrix of attributes
grid_matrix <- do.call(CJ, rep(list(1:0), N)) %>% as.big.matrix
Error: cannot allocate vector of size 8.0 Gb
我尝试了另一种方法:
grid_matrix <- do.call(CJ, rep(list(1:0), N)) %>% as.data.frame
grid_matrix <- as.matrix (grid_matrix)
仍然出现同样的错误。
如何修复它并将其用于大数据?我想继续:
colnames(grid_matrix) <- paste0("p", 1:N)
combin_all_element_present <- rowSums(grid_matrix %*% attribute_matrix > 0) %>% `==`(., ncol(attribute_matrix))
grid_matrix_sub <- grid_matrix[combin_all_element_present, ]
grid_matrix_sub[rowSums(grid_matrix_sub) == min(rowSums(grid_matrix_sub)), ]
【问题讨论】: