我通过by <- rbeta(500000, 1, 3)
用500000个随机样本创建了贝塔分布B(1,3(,然后我计算sum(log(1-by))
,但我想在by
的5个样本组中计算,这意味着我取by
的前5个样本,计算前5个样点中的sum(log(1-by))
,然后取下5个样本(第5到第10个样本(,计算sum(log(1-by))
,一直计算到最后。你能帮我怎么做吗?
聚合应该完成的工作
aggregate(by ~ rep(1:100000, each = 5), FUN = function(x) sum(log(1-x)))
这对by
的每个元素执行log(1-by)
,然后对第1到第5、第6到第10等的元素求和,如所示
> V1 <- rbeta(6, 1, 3)
> log(1-V1)
[1] -1.03779783 -0.04631726 -0.02731994 -0.99583209 -0.03959935 -0.02131620
> aggregate(V1 ~ rep(1:2, each = 3), FUN = function(x) sum(log(1-x)))
rep(1:2, each = 3) V1
1 1 -1.111435
2 2 -1.056748
要提取该列求和值作为向量,只需在后面加上[,2]
即可得到aggregate(...)[,2]
。