如何解决如何将 nlsList 中的系数获取到数据框中?
有没有办法只从 nlsList() 中提取估计值? 示例数据:
library(nlme)
dat<-read.table(text="time gluc starch solka
1 6.32 7.51 1.95
2 20.11 25.49 6.43
3 36.03 47.53 10.39
6 107.52 166.31 27.01
12 259.28 305.19 113.72
24 283.40 342.56 251.14
48 297.55 353.66 314.22",header = TRUE)
long <- tidyr::pivot_longer(dat,-1,values_to = "y")
long$name <- factor(long$name)
st0 <- list(Max = 200,k = 0.1,Lag = 0.5)
kinetics<-nlsList(y ~ (time > Lag) * Max * (1-exp(-k * (time - Lag))) | name,long,start = st0)
我想得到如下图所示的数据框,以及它们对 Max、k 和 Lag 的估计值,但不知道如何操作。
解决方法
我们可以提取 coef
,然后使用 apply
循环遍历 3d 数组
library(nlme)
m1 <- apply(summary(kinetics)$coef,3,function(x) x[,1])
dat <- transform(as.data.frame(m1),name = row.names(m1))[c(4,1:3)]
row.names(dat) <- NULL
-输出
dat
name Max k Lag
1 gluc 299.6637 0.16155846 2.426204
2 solka 337.5416 0.06583197 4.966971
3 starch 353.7206 0.18416048 2.276593
,
这里有一个简单的方法,只需将系数适当的维度强制到类"data.frame"
。
cf_smry <- coef(summary(kinetics))[,1,]
as.data.frame(cf_smry)
# Max k Lag
#gluc 299.6637 0.16155846 2.426204
#solka 337.5416 0.06583197 4.966971
#starch 353.7206 0.18416048 2.276593
,
coef(kinetics)
提供了一个数据框,因此其中任何一个都可以工作,并且仅在名称显示为行名称(第一个)或列(其他)方面有所不同。
coef(kinetics)
data.frame(name = names(kinetics),coef(kinetics),row.names = NULL)
tibble::rownames_to_column(coef(kinetics),var = "name")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。