expand.grid-尝试解决“问题”;无法分配大小为“的向量”;问题

expand.grid-尝试解决“问题”;无法分配大小为“的向量”;问题,r,performance,function,mclapply,R,Performance,Function,Mclapply,我需要创建大量的数据。组合框架,但我不需要全部。但正如我在这里看到的,expand.grid函数不能添加组合抛出的特定条件 所以我决定一步一步走。比如我有 variants<-9 # number of possible variants aa<-c(0:variants) # vector of possible variants ab<-c(0:variants) ac<-c(0:variants) ad<-c(0:variants) ae<-c(0:va

我需要创建大量的数据。组合框架,但我不需要全部。但正如我在这里看到的,expand.grid函数不能添加组合抛出的特定条件

所以我决定一步一步走。比如我有

variants<-9 # number of possible variants
aa<-c(0:variants) # vector of possible variants
ab<-c(0:variants)
ac<-c(0:variants)
ad<-c(0:variants)
ae<-c(0:variants)
af<-c(0:variants)
ag<-c(0:variants)
ah<-c(0:variants)
ai<-c(0:variants)
aj<-c(0:variants)
出现“无法分配大小向量”问题

所以我试着一步一步地

step<-2 # it is a condition for subsetting the grid
grid_2<-expand.grid(aa,ab)
sub_grid_2<-grid_2[abs(grid_2[,1]-grid_2[,2])<=step,]

step你的目标是什么?你想保留哪些组合?我相信Rcpp会使创建组合变得很简单,并且只保留那些感兴趣的组合(如果有用组合的数量难以猜测,那么一个小问题可能是预先分配一个良好维度的矩阵)。目标是。我正在做一个学校项目,我想创建负责变量的可能组合的组合,看看哪个更好(这是关于股票的,因为数据),我知道有些组合在实际情况下是不可能的,所以我不需要它们(我会将它们子集,但我会尽量节省内存)。所以我认为问题不在这方面。我想找到一种更快的有趣的方式,比如说,在计算时间很长的情况下,用它来有趣地使用网格列表8。惰性
的实现是否会扩展。网格
帮助?@r2evans我仔细研究了它,但我不确定是否完全理解了它。我没有我想扔掉的具体数字,这取决于,就像上面的例子,网格中特定列的绝对差异,你们的目标是什么?你想保留哪些组合?我相信Rcpp会使创建组合变得很简单,并且只保留那些感兴趣的组合(如果有用组合的数量难以猜测,那么一个小问题可能是预先分配一个良好维度的矩阵)。目标是。我正在做一个学校项目,我想创建负责变量的可能组合的组合,看看哪个更好(这是关于股票的,因为数据),我知道有些组合在实际情况下是不可能的,所以我不需要它们(我会将它们子集,但我会尽量节省内存)。所以我认为问题不在这方面。我想找到一种更快的有趣的方式,比如说,在计算时间很长的情况下,用它来有趣地使用网格列表8。惰性
的实现是否会扩展。网格
帮助?@r2evans我仔细研究了它,但我不确定是否完全理解了它。我并没有我想扔掉的具体数字,它取决于,就像上面的例子,网格中特定列的绝对差
step<-2 # it is a condition for subsetting the grid
grid_2<-expand.grid(aa,ab)
sub_grid_2<-grid_2[abs(grid_2[,1]-grid_2[,2])<=step,]
  fun_grid_list_3<-function(x){
  a<-sub_grid_2[x,1]
  b<-sub_grid_2[x,2]
  d<-rep(c(1:variants))
  c<-data.frame(Var1=rep(a,variants),Var2=rep(b,variants),Var3=d)
  return(c)
}

    sublist_grid_3<-mclapply(c(1:nrow(sub_grid_2)),fun_grid_list_3,mc.cores=detectCores(),mc.preschedule=FALSE)
sub_grid_3=ldply(sublist_grid_3)