使用摘要

时间:2019-05-09 15:33:29

标签: r dplyr

我需要将mixtools库中的函数normalmixEM()应用于分组数据。但是normalmixEM()返回了一个summarise_all不喜欢的对象。

理想情况下,我想返回一个列表,然后可以在下一步中进行分解。失败的话,将我需要的每个返回值都分成自己的列。

stattest是一个具有三列的数据框,看起来像这样:

Sample, year, x
1 ,    2017,  43
1 ,    2017,  23
1 ,    2017,  19
1 ,    2018,  26
1 ,    2018,  16
2 ,    2017,  63
2 ,    2017,  25
2 ,    2018,  22

这就是我要尝试的:

BiModality <- stattest %>%
  group_by(Sample,year) %>%
  summarise_all(funs(     
      try(normalmixEM(x, eps=1e-03, arbmean=TRUE,mu=c(mean(x)*0.7,mean(x)*1.3)), silent=TRUE) )
   )

导致错误的原因 x列的长度必须为1(汇总值),而不是9

所以我尝试返回一个值:

BiModality <- stattest %>%
  group_by(Sample,year) %>%
 summarise_all(funs(

      try(normalmixEM(x, eps=1e-03, arbmean=TRUE,mu=c(mean(x)*0.7,mean(x)*1.3))$lambda[1], silent=TRUE) )
   )

这使我接近,但最终未能说出: 错误:列x无法将第13组提升为数字

理想的情况是我最终得到一个新的数据框:

Sample, Year, MxMdl
1 , 2017, [object that I can access subvariables of]
1, 2018, [object]
...

但如果需要以以下形式输出:

Sample, Year, Lambda1, Lamba2, Mu1, Mu2, Sigma1, Sigma2
1, 2017, 0.6, 0.4, 3.2, 4.1, 0.76, 0.63
...

也很好。

0 个答案:

没有答案