【发布时间】:2016-03-11 16:01:03
【问题描述】:
我为以下数据拟合了一个模型,并希望使用“broom”包中的 tidy 函数来总结模型结果。
library(plyr)
library(dplyr)
library(minpack.lm)
library(broom)
Sample = as.factor(c("a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"))
X = c(0.0,2.1,7.0,9.2,14.0,16.1,42.0,49.0,56.1,65.1,79.0,91.0,105.0,119.2,133.0,147.0,163.0,183.1,219.0,10.0,12.1,17.0,19.1,24.0,26.1,52.0,59.0,66.1,75.2,89.0,101.0,115.0,129.1,143.0,157.0,173.0,193.1,229.0)
Y = c(0.0,1.3,7.4,11.7,16.6,18.0,36.8,39.5,42.5,46.3,51.8,57.3,61.5,64.0,67.6,74.7,72.5,76.9,83.4,20.3,25.0,31.8,36.3,41.6,43.4,68.0,71.8,76.3,81.5,88.2,95.5,101.7,105.6,111.5,115.2,119.3,126.4,132.8)
df = data.frame(Sample,X,Y)
#doing the fit wraped in try() because some models fail because of the wrong starting values
dfSample = df %>% group_by(Sample) %>%
do(fitSample = try(nlsLM(Y~CA*(1-exp(-k1*X))+CB*(1-exp(-k2*X)), data = .,
start=list(k1=(0.07), k2=(0.08), CA=7, CB=23))))
#subsetting for successful models
elim = "Error in nlsModel"
dfSamplei = subset(dfSample, !grepl(paste(elim), dfSample$fitSample))
#tidy the outcome
dfSampleCoef = tidy(dfSamplei, fitSample)
#Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
#Error during wrapup: evaluation nested too deeply: infinite recursion / options(expressions=)
tidy 适用于未由子集函数子集但在子集后出错的数据。有人知道吗?
【问题讨论】:
-
似乎子集丢弃了看起来很整齐的组。我似乎
dfSampleCoef = tidy(dfSamplei %>% rowwise(), fitSample)会解决这个问题。我无法完全解决“为什么”,所以也许其他人可以给出确切的原因并提供更完整的答案 -
您正在使用 plyr 和 dplyr?我认为通常建议使用两者之一,而不是两者。
标签: r