Поскольку группы нумеруются, начиная с 1, вы можете использовать вектор groups
для индексации вектора weights_by_group
.
weights_ind = weights_by_group[groups]
На моем компьютере, для отдельного пользователя 2000, это занимает около 10 микросекунд .
Если бы ваши группы не были числительными c, вы могли бы назвать вектор 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]