2015-01-13 3 views
2

내 코드의 마지막 줄에 충분한 메모리가 없다는 오류가 표시됩니다. 어떤 도움을 주시면 감사하겠습니다! 모든 조합을 찾은 후 그룹 1에서 4까지 선택한 2 개와 그룹 5에서 선택한 1 개를 포함한 9 명의 플레이어 팀을 구성 할 수 있습니다. 모든 조합을 찾은 후 모든 조합을 주어진 급여 임계 값 아래로 찾고 싶습니다.메모리가 부족하여 실행 속도가 느리다.

pg.number= 1:10 
sg.number= 11:20 
sf.number= 21:30 
pf.number=31:40 
c.number=41:50 

pg.combos= combn(pg.number, 2) 
sg.combos= combn(sg.number,2) 
sf.combos= combn(sf.number, 2) 
pf.combos= combn(pf.number, 2) 
c.combos= combn(c.number, 1) 


replicate.vec= function(vector,matrix.1) { 
    empty.matrix<- matrix(vector, nrow=length(vector), ncol= ncol(matrix.1)) 
    rbind(matrix.1, empty.matrix) 
} 


list<- as.list(numeric(ncol(sg.combos))) 
for (i in 1:ncol(sg.combos)) { 
    list[[i]]=replicate.vec(sg.combos[,i],pg.combos) 
} 
pg.and.sg<-as.matrix(do.call(cbind,list)) 

list<- as.list(numeric(ncol(sf.combos))) 
for (i in 1:ncol(sf.combos)) { 
    list[[i]]=replicate.vec(sf.combos[,i],pg.and.sg) 
} 
pg.sg.sf<-as.matrix(do.call(cbind,list)) 


list<- as.list(numeric(ncol(pf.combos))) 
for (i in 1:ncol(pf.combos)) { 
    list[[i]]=replicate.vec(pf.combos[,i],pg.sg.sf) 
} 
pg.sg.sf.pf<-as.matrix(do.call(cbind,list)) 


list<- as.list(numeric(ncol(c.combos))) 
for (i in 1:ncol(c.combos)) { 
    list[[i]]=replicate.vec(c.combos[,i],pg.sg.sf.pf) 
} 
all.lineups<-as.matrix(do.call(cbind,list)) 
all.lineups 


c1<- 1:50 
c2<- rnorm(50) 
c3<- rnorm(50, mean=100) 
c4<- rnorm(50) 
df<- data.frame(cbind(c1,c2,c3,c4)) 

get.fantasy.salary<- function(vector) { 
    sum(df[vector,3]) 
} 

get.fantasy.points<- function(vector) { 
    sum(df[vector,4]) 
} 
sum.salary<-apply(all.lineups,2, get.fantasy.salary) 
+0

왜 각 그룹에서 최저 임금으로 선수를 데려 가지 않니? –

+0

@marat 내 게시물을 편집했습니다. 주어진 급여 기준 액보다 낮은 모든 조합을 찾고 싶습니다. – Zslice

+0

아마도 영리한 수학은 프로그래밍보다 영리한 도움이 될 것입니다. MathOverflow를 최적의 알고리즘으로 간주 했습니까? – nacnudus

답변

0

apply(,2)이 느리다. 대신, 당신은 사용할 수 있습니다

salary.lineups <- matrix(df[all.lineups,3],nrow=9) 
colSums(salary.lineups) 
관련 문제