nx 행렬에서 대각선이 아닌 각 원소의 평균을 계산해야합니다. 아래쪽 삼각형과 위쪽 삼각형은 중복됩니다. 현재 사용중인 코드는 다음과 같습니다.대용량 행렬에서 대각선을 벗어난 평균을 더 빨리 계산하는 방법
A <- replicate(500, rnorm(500))
sapply(1:(nrow(A)-1), function(x) mean(A[row(A) == (col(A) - x)]))
더 큰 매트릭스에서는 잘 작동하지 만 잘 변형되지 않습니다. 내가 가진 것들 2-5000^2 주위에 거대한 아니지만, 심지어 1000^2 내가 좋아하는 것보다 더 오래 복용 :
A <- replicate(1000, rnorm(1000))
system.time(sapply(1:(nrow(A)-1), function(x) mean(A[row(A) == (col(A) - x)])))
> user system elapsed
> 26.662 4.846 31.494
이 일을 더 똑똑한 방법이 있나요?
편집 분명히하기 위해 각 대각선의 평균을 개별적으로 나타내고 싶습니다. 를 위해 :
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
내가 좋아하는 것 :
mean(c(1,2,3))
mean(c(1,2))
mean(1)
색인을 잘 사용합니다. 그것이 얼마나 강력한 지표가 될 수 있는지를 보여주기 때문에, 나는 이것을 받아 들여진 대답으로 투표한다. –
고맙습니다.하지만 당신의 것이 훨씬 명확합니다. @ JorisMeys; 이 방법은 _lot_ 및 두 번째 광고의 10 분의 1을 수행해야하는 경우에만 추가 합병증의 가치가 있습니다. –
매우 똑똑합니다. 나는 무엇이 진행되고 있었는지 이해하기 위해 색인 생성을해야했습니다. 답변을 주셔서 감사합니다 – blmoore