gpt4 book ai didi

r - 在 R 中为组的每个成员分配值的快速方法

转载 作者:行者123 更新时间:2023-12-01 16:24:28 25 4
gpt4 key购买 nike

我需要为组中的每个成员赋予权重。我做了以下循环来创建 weights_ind 向量(个体权重向量),但我的循环太慢(2000 个个体需要 2 秒):

# Data example
n.group = 10
n.tot = 1000
groups = sample(1:10, n.tot, replace = TRUE)
weights_by_group = rexp(n.group, rate = 1)


weights_ind = rep(NA, n.tot)
for(i in 1:n.tot){
for(j in 1:n.group) {
if(groups[i] == j)
weights_ind[i] = weights_by_group[j]
}}

在我的情况下我可以使用哪个更快的函数?

最佳答案

由于组从 1 开始编号,因此您可以使用 groups 向量来索引 weights_by_group 向量。

weights_ind = weights_by_group[groups]

在我的计算机上,对于 2000 个人来说,这大约需要 10 微秒。

如果您的组不是数字,您可以使用组标识符命名 weights_by_group 向量,并仍然使用 groups 进行索引:

groups = sample(letters[1:n.group], n.tot, replace = TRUE)
weights_by_group = rexp(n.group, rate = 1)
names(weights_by_group) = letters[1:n.group]

weights_ind = weights_by_group[groups]

关于r - 在 R 中为组的每个成员分配值的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59616126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com