В симуляции, которую я программирую, на каждой итерации мне нужно вычислить сумму некоторых случайных чисел пуассонов для каждой строки в кадре данных, где параметры хранятся в другом столбце этой строки ,Сумма случайных чисел пуассонов по кадру данных
Вот пример данных (называемых «исследований» в коде ниже):
phase Sites enroll_rate rec_months stud_months enrolled m_enroll
51 2 1 2.95920139 2.0000000 5.000000 6 0
52 2 24 0.20784867 2.0000000 5.000000 10 0
53 2 3 0.46501736 3.0000000 6.000000 2 0
54 2 2 1.40480769 3.0000000 6.000000 7 0
55 2 1 1.31299020 5.0000000 7.000000 3 0
64 2 29 0.04373204 0.9712526 1.971253 2 0
И вот код, который я использую для достижения этого:
for (j in 1:nrow(studies)) {
studies$m_enroll[j] <- sum(rpois(studies$Sites[j],studies$enroll_rate[j]))
}
Это делает задание, но учитывая, что кадр данных составляет сотни строк, и я делаю это моделирование десятки тысяч раз, он довольно неэффективен.
Я чувствую, что есть способ сделать это, используя одну из применяемых функций, но мой опыт с ними ограничен. Есть идеи?
Нет времени, как настоящий, чтобы узнать! :-). 'm_enroll <- mapply (function (x, y) sum (rpois (x, y)), Sites, enroll_rate)' #not проверено, но достаточно близко, чтобы начать работать –
Спасибо Carl - отлично работает! – user1445246