【发布时间】:2014-02-27 19:45:12
【问题描述】:
我正在尝试从我经常使用的包中加速 R 函数,因此非常感谢任何帮助矢量化下面的 for 循环!
y <- array(0, dim=c(75, 12))
samp <- function(x) x<-sample(c(0,1), 1)
y <- apply(y, c(1,2), samp)
nr <- nrow(y)
nc <- ncol(y)
rs <- rowSums(y)
p <- colSums(y)
out <- matrix(0, nrow = nr, ncol = nc)
for (i in 1:nr) {
out[i, sample.int(nc, rs[i], prob = p)] <- 1
}
我很难解决的问题是循环中对对象“rs”的引用。
有什么建议吗?
【问题讨论】:
-
有一个RcppArmadillo implementation of
sample。因此,您可以尝试使用 Rcpp 来实现它,看看它是否更快。
标签: r for-loop vectorization