r-我如何按顺序子集



我通过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]

最新更新