Я знаю, что на этом сайте были заданы одинаковые вопросы here, here и here, но ни одна из них не справляется с моей проблемой.Как применить функцию распределения для каждой строки в фрейме данных
У меня есть кадр данных, который я хочу применить функцию rdirichlet
(от gtools
) к каждой строке. Итак, каждая строка должна рассматриваться как aplha.
data = NULL
data <- data.frame(rbind(
oct = c(60, 32, 8),
sep = c(53, 35, 12),
ago = c(54, 40, 6)
))
data <- data/100*1000
library(gtools) # contains the function
sim <- 10000 # simulation
Моя первая attenpt было использовать apply
, он работает, но выход не то, что ясно для проведения дальнейшего анализа; каждое вычисление строки становится вектором:
p = apply(data, 1, function(x) rdirichlet(sim, alpha = x + 1))
Я также попробовать в цикле без успеха:
p = NULL
for(i in 1:length(data)) {
p[i] <- rdirichlet(sim, alpha = data[i] + 1)
}
Любого наконечника, как я могу решить эту проблему?
Может 'lapply (данные, rdirichlet, п = сим)' – jbaums
@jbaums, я предполагаю, что вы имеете в виду что-то вроде 'sapply (т (данные) , rdirichlet, n = sim) ', хотя в нем отсутствует элемент' x + 1' –
@David - ну, что зависит от того, что такое «строка». (И я понятия не имею, что релевантность «x + 1» ... это не описано в Q). – jbaums