如何按顺序子集?

问题描述 投票:0回答:1

我创建了500,000个随机样本的Beta分布B(1,3),方法是 by <- rbeta(500000, 1, 3)然后,我计算 sum(log(1-by)) 但我想计算5组的 by 这意味着我取了前5个样品的 by 并计算 sum(log(1-by)) 在前5个样本的基础上,再取下5个样本(第5至第10个样本),计算出该样本中的 sum(log(1-by)),这样做直到最后。你能帮我怎么做吗?

r subset
1个回答
1
投票

集料应该可以完成这项工作

aggregate(by ~ rep(1:100000, each = 5), FUN = function(x) sum(log(1-x)))

这样做 log(1-by) 对每一个 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].

© www.soinside.com 2019 - 2024. All rights reserved.