expand.grid - попытаться решить проблему "невозможно выделить вектор размера"

Мне нужно создавать огромные data.frame комбинаций, но они мне не нужны все. Но, как я увидел здесь, функция 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)

Если я попытаюсь

expand.grid(aa,ab,ac,ad,ae,af,ag,ah,ai,aj)

возникает проблема "невозможно выделить вектор размера"..

Поэтому я старался идти шаг за шагом, как

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)

Но проблема возникает, когда я прихожу к сетке из 8 и более переменных. Это занимает так много времени, но нужно просто добавить число в другой кадр. Может быть, я ошибаюсь, и мне действительно нужно это время, но я надеюсь, что есть более эффективный способ сделать это.

Все, что мне нужно, это создать expand.grid из 2 переменных, а затем добавить условие для его подмножества. Затем добавьте еще один столбец, который учитывает подмножество сетки (добавьте c(0: варианты) к каждой строке, это означает, что, конечно, создайте больше строк... и затем установите его под условием и т. Д.)

Кто-нибудь может помочь сделать это быстрее? Я надеялся, что использование функции mclapply Trought должно быть самым быстрым, но, возможно, нет..

Спасибо всем...

0 ответов

Другие вопросы по тегам