0

我对许多科目都有一组观察结果,我想为每个科目拟合一个模型。

我正在使用包data.tablefitdistrplus,但也可以尝试使用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有没有任何直观的方法可以使用or来做到这一点dplyr

编辑:提供了一个 dplyr 答案,但我也希望有一个 data.table ,我将尝试针对这两者运行一些基准测试。

4

1 回答 1

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"))
于 2016-07-06T18:48:18.940 回答