我尝试使用sapply创建一个矩阵,其中包含rbeta使用不同的指定alpha和beta从数据集获得的输出,我认为这应该是相当简单的,但我正在努力。
这里有一些数据
q1 <- c(27, 104)
q2 <- c(25, 121)
q3 <- c(29, 114)
df <- as.data.frame(rbind(q1,q2,q3))
colnames(df) <- c('alpha','beta')
这就是我所做的。它给了我3个单独的rbeta样本,但我不认为它按行取正确的值。例如,第一个rbeta应该是:rbeta(I, 27, 104)
I=10
rb <- sapply(1:3, function(x) rbeta(I, df$alpha, df$beta))
有人能澄清我做错了什么吗?或者给我指出另一个方向?
2条答案
按热度按时间cbjzeqam1#
在行上使用
apply
或使用
Vectorize
ecbunoof2#
一般来说,我们可以使用
Map
或mapply
来提供向量(或列表)形式的参数,如果它们的长度不匹配,比如这里的10
,元素就会被回收。mapply
试图简化为一个矩阵,就像sapply
与lapply
相比所做的那样。如果您查看Vectorize
的源代码,就会发现其中还包含mapply
。)实际上,如果您说