나는 N이라는 확률의 큰 행렬 (A라고 부름)을 가지고 있는데, N은 일반적으로 수천의 숫자이다.r - 매트릭스를 반복하고 각 요소에 값을 계산하고 할당하는 빠른 방법?
이 행렬을 사용하여 이진 값만 포함하는 다른 행렬 (B라고 함) (N은 806)을 작성하려고합니다. B [i, j]의 값은 이항을 통해 A [i, j]의 해당 확률을 사용하여 결정됩니다. I가 사용하고있는 코드는 아래와 같다 : 기본적
diCases <- matrix(0, nrow = numcases, ncol = numdis)
diConts <- matrix(0, nrow = numconts, ncol = numdis)
for(row in 1:nrow(diCases)) {
print(paste('Generating disease profile for case', row, '...'))
for(col in 1:ncol(diCases)) {
pDis <- Pcases[row, col]
diCases[row, col] <- rbinom(1, 1, pDis)
}
}
for(row in 1:nrow(diConts)) {
print(paste('Generating disease profile for control', row, '...'))
for(col in 1:ncol(diConts)) {
pDis <- Pconts[row, col]
diConts[row, col] <- rbinom(1, 1, pDis)
}
}
, I는 1 또는 0 결과에 기초하여 할당, 각 행의 모든 열을 반복하여 다음 행으로 이동하는, 루프 중첩 사용에 의존 한 of :
rbinom(1, 1, pDis)
여기서 pDis는 처음에 언급 한 A [i, j]입니다. 상상할 수 있듯이 이것은 매우 느리고 코드에서 주요 병목입니다. 이 코드 블록은 시뮬레이션을 통해 내가 단기간에 이상적으로 반복해서 실행하도록 계획 한 것입니다.
더 빠른 방법이 있습니까? 필자는 "적용"기능을 살펴 보았지만 실제로이 특정 작업을 수행하는 방법을 알지 못했습니다.
감사합니다. 각 번호에 들어가는 휴대폰 번호를 알고있는 경우
을 시도, 당신은 어떤 루프 (또는'apply'ing)없이 직접 할당 할 수 있습니다. 당신의'pDis'는 무엇입니까? –
pDis는 행렬 A의 해당 확률이며 행렬 B의 이진 값을 계산할 때 사용합니다. konvas가 제안한 전체 행렬에서'rbinom'을 호출 할 수 있다는 것을 알지 못했습니다. 그리고 그것은 아름답게 작동했습니다. – user3821273