나는 게놈 데이터 집합 (약 56k 열)에서 시작 지점과 끝 지점을 모두 필요로하는 사용자 지정 임의 포리스트 기능으로 작업하고 있습니다.병렬 처리 R
열 번호를 하위 그룹으로 분할하고 각 하위 그룹을 개별적으로 처리하여 작업 속도를 높이고 싶습니다. 나는 다음과 같은 코드로이 (실패) 시도 :
library(foreach)
library(doMC)
foreach(startMrk=(markers$start), endMrk=(markers$end)) %dopar%
rfFunction(genoA,genoB,0.8,ntree=100,startMrk=startMrk,endMrk=endMrk)
startMrk 숫자 변수의 배열입니다
: 1 4 8 12 16
가와 endMrk 다른 배열이 예를 들어 3 7 11 15 19
, 나는 하나 개의 코어 싶어 샘플 1 : 3을 실행하고, 다른 것은 4 : 7을 실행합니다. R에서의 병렬 처리에 대한 아이디어가 새로 생겨서 사용할 수있는 모든 문서를 기꺼이 연구하려고합니다. 누구든지 병렬 처리 또는 위의 코드에서 누락 된 것에 대한 조언을 갖고 있습니까?
,하지만 난 같은 것을 사용했을 때 'R <- foreach 문을 (I = 1 : 5, .combine = "cbind") % dopar % {랜덤 포레스트 (제노아, genoB, 0.835, ntree = 100, startMrk = 마커 $ start [i], endMrk = 마커 $ end [i])}' 나는 내가 원하는 것을 찾았습니다. 하나의 마지막 질문 : 내가 사용하는 사용자 지정 함수는 목록을 반환합니다. 목록의 요소를 선택적으로 결합하는 방법이 있습니까? 도움 주셔서 감사합니다. – trvrr
조금 늦었지만 "최종 질문"에 대답하십시오. "목록의 요소를 선택적으로 결합하는 것"이 아닌, 관심있는 목록 요소를 추출하지 않는 이유는 무엇입니까? 'foreach (...) % dopar % {return (list (A = ..., B = ...))}'; 시도해보십시오 :'foreach (...) % dopar % {res <- list (A = ..., B = ...); return (res $ A)}'. 또는 같은 일을하는 자신 만의'.combine' 함수를 정의하십시오. (첫 번째 옵션은 데이터가 덜 움직이는 결과를 가져 오며,'res $ B'가 큰 경우 중요합니다!) – dynamo