nc <- 5000
nr <- 1024
m <- matrix(rnorm(nc*nr), ncol=nc)
가 I이 매트릭스 랜덤 찍은 동일한 크기의 rowMeans
두 그룹 간의 차이를 취할 목적으로, 다음의 행렬을 고려한다.
n <- 1000 # group size
system.time(replicate(100, {
ind1 <- sample(seq.int(nc), n)
ind2 <- sample(seq.int(nc), n)
rowMeans(m[, ind1]) - rowMeans(m[, ind2])
}))
그것은 아주 천천히, 더 효율적으로 뭔가를
제안 (대부분의 시간 is.data.frame
??에 보냈다는 듯) 불행하게도 나는 Rprof의 출력을 이해하지 못합니까? 내 온라인 독서에서 나는 R의 rowMeans 매우 효율적이라고 생각, 그래서이 단계에서 도움이 될 것이다 분명하지 않다 :
Rcpp
:나는 다음과 같은 고려했다. 병목이 실제로 처음 어디에 있는지 확신하고 싶습니다. 아마도 전체 설계가 차선책 일 수 있습니다. 대부분의 시간이 각각의 더 작은 행렬에 대해 복사하는 데 소비된다면 Rcpp는 더 잘 수행 할 수 있습니까?
R-devel로 업데이트하면 더 효율적으로 새로운
.rowMeans
기능이있는 것 같습니다. 아무도 그것을 시도 했습니까?
감사합니다.
, 난 당신이 조금 얻을 의심 것 . RcppArmadillo를 통해 시도 할만큼 빠르지 않아야합니까? –
상당히 쉽습니다. 그렇지만 잘하면 순수 R로 빠져 나갈 수 있습니다. 본질적으로 모든 R 접근이 실패 할 때 시도해 보겠습니다. 또한 Rcpp에서 난수 관리에 대한 경험이 없습니다. – baptiste
Rcpp 설탕은 R이 사용하는 동일한 스트림을 제공합니다 :-) –