1
0,1,2 값을 포함하는 큰 행렬을 수정하고 2를 1로 바꾸려고합니다. 행렬에 500.000 열과 7000 행이 포함되어 있습니다. 데이터는 이미 50 행만큼 읽혀졌고 이제는 foreach() % dopar %를 사용하여 블록 및 다중 스레드로 나누기를 원합니다.R 병렬로 수행
> SNPchunk
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 0 0 0 0 1 0 0 2
[2,] 1 0 1 0 1 1 1 0
[3,] 1 0 1 0 1 1 0 1
[4,] 0 0 0 0 1 0 0 2
[5,] 0 0 0 0 2 0 2 1
[6,] 0 0 0 0 0 0 0 1
[7,] 0 0 0 0 1 0 0 2
[8,] 0 0 0 0 2 0 1 1
[9,] 1 1 1 0 1 1 0 1
[10,] 0 0 0 0 1 0 1 1
잉크 (a) 문 리턴 변수
입술와
chunk = foreach (part = 1:snpsplit) %do%
{
snpchunk = SNPcomponents[,snp.start[part]:snp.stop[part]]
#print(part)
res = foreach(SNP=1:ncol(snpchunk), .combine='cbind') %dopar%
{
a = snpchunk[,SNP]
a[a==2] <- 1
print(a)
}
}
는 1S 대체 모두 2S로하여 X N의 행렬이다. 내가 첫 번째 결과를 얻는 방법에만 값 1
>res
result.1 result.2 result.3 result.4 result.5 result.6 result.7 result.8
1 1 1 1 1 1 1 1
를 포함하는 X 1의 매트릭스가 반환 된 변수 고해상도 인쇄 (A) 문이없는 그러나
result.1 result.2 result.3 result.4 result.5 result.6 result.7 result.8 [1,] 0 1 1 1 0 1 1 1 [2,] 0 0 0 0 0 0 0 0 [3,] 1 0 0 0 0 0 0 0 [4,] 0 0 0 0 0 0 1 1 [5,] 0 1 1 1 0 0 1 1 [6,] 1 0 1 1 0 1 1 1 [7,] 0 1 1 1 0 0 1 1 [8,] 0 1 0 0 1 1 1 1 [9,] 0 0 0 0 0 0 0 0 [10,] 1 1 0 0 0 0 0 1
print 문을 사용하지 않고? 도움 주셔서 감사합니다. J.