我想在rbeta中同时使用不同参数值的向量,并得到一个长度为n向量元素之和的向量。例如,
n <- c(10, 20, 30)
alpha <- c(1,2,3)
beta <- c(3,2,1)
rbeta(n, alpha, beta)
底线并不符合我的意愿。我希望输出是一个长度为10 + 20 + 30 = 60的向量,前10个元素是来自beta(1,3)的10个样本,接下来的20个元素来自beta(2,2)和下一个来自beta(3,1)的30个元素。这样做的最佳方式是什么?
答案 0 :(得分:2)
通常,在将函数应用于向量元素时,您需要<img src="https://source.unsplash.com/random" style="vertical-align:middle; width:100%; height:100%;">
超过输入向量:
lapply
但是,在您的情况下,您只需unlist(lapply(n, rbeta, 2, 1)
所有sum
s:
n
如果您有rbeta(sum(n), 2, 1)
和alpha
的多个参数,则可以使用Map
代替(小心,与beta
相比,参数被反转):
lapply
答案 1 :(得分:1)
对于您修改过的问题,我认为明智地使用rep()
会使其发挥作用。
n <- c(10, 20, 30)
alpha <- c(1,2,3)
beta <- c(3,2,1)
rbeta(sum(n),rep(alpha,n),rep(beta,n))