我有很多科目的观察结果,我想为每个科目拟合一个模型。
我正在使用包data.table
和fitdistrplus
,但也可以尝试使用dlpyr
。
说我的数据是这种形式:
#subject_id #observation
1 35
1 38
2 44
2 49
这是我迄今为止所做的尝试:
subject_models <- dt[,fitdist(observation, "norm", method = "mme"), by=subject_id]
这会导致错误,因为对fitdist
的调用会返回一个fitdist
对象,而该对象无法存储在数据表/数据框中。
有没有直观的方法可以使用data.table
或dplyr
?
编辑:提供了一个dplyr答案,但我也很感激data.table,我会尝试对这两个人进行一些基准测试。
答案 0 :(得分:2)
使用purrr
包
我认为@alistaire建议
同样的事情library(purrr)
library(dplyr)
library(fitdistrplus)
dt %>% split(dt$subject_id) %>% map( ~ fitdist(.$observation, "norm", method = "mme"))
或者,没有purrr
,
dt %>% split(dt$subject_id) %>% lapply(., function(x) fitdist(x$observation, "norm", method = "mme"))