摆脱R中的for循环

时间:2013-04-17 01:49:16

标签: r

我想在没有循环的情况下对具有不同概率集的给定向量进行采样。有没有办法做到这一点?

例如在这段代码中我想用某种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,])
}

感谢您的帮助!

1 个答案:

答案 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}}。