我想在没有循环的情况下对具有不同概率集的给定向量进行采样。有没有办法做到这一点?
例如在这段代码中我想用某种apply()结构替换循环或任何真正的...
a <- c(1,2,3)
p <- matrix(c(.1,.1,.8,.1,.8,.1,.8,.1,.1), nrow=3)
s <- matrix(ncol=5, nrow=3)
for(i in 1:nrow(p)){
s[i,] <- sample(a, size=5, replace=T, prob=p[i,])
}
感谢您的帮助!
答案 0 :(得分:2)
apply
本身上的 p
:
t(apply(p, 1, sample, x=a, size=5, replace=TRUE))
[,1] [,2] [,3] [,4] [,5]
[1,] 3 3 1 3 3
[2,] 2 2 1 1 2
[3,] 1 1 1 1 1
编辑我在这里有一个functional::Curry
,直到flodel指出没有必要,因为apply
通过{...
允许命名参数自动提供咖喱1}}。