You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在循环中提取Console输出值、标记分组并转为data.frame?

提取NLS循环拟合结果并整理为Data Frame

我编写了一个NLS循环,拟合结果输出在控制台中,现需提取每组的拟合参数(包括Estimate、Std. Error、t value、Pr(>|t|)),标记其所属分组后,将所有数据整理为data.frame用于后续分析。

当前循环代码

for (i in seq_along(trtlist2)) { loopmm.nls <- 
  nls(rate ~ (Vmax * conc /(Km + conc)), 
      data=subset(M3, M3$trtlist==trtlist2[i]),
      start=list(Km=200, Vmax=2),  trace=TRUE )

summary(loopmm.nls)
print(summary(loopmm.nls))
}

控制台输出示例(共约20组)

Parameters:
     Estimate Std. Error t value Pr(>|t|)    
Km   23.29820    9.72304   2.396   0.0228 *  
Vmax  0.10785    0.01165   9.258 1.95e-10 ***
---

我尝试过多种提取方法,但均无法在循环中生效;仅append方法可提取Estimate值,但无法获取其他指标。


解决方案

可以通过初始化空列表存储每组结果,循环内提取完整参数矩阵并补充分组信息,最后合并为统一的data.frame。

完整实现代码

# 初始化空列表,用于存储每组的拟合结果
result_list <- list()

for (i in seq_along(trtlist2)) {
  # 拟合NLS模型
  loopmm.nls <- nls(rate ~ (Vmax * conc /(Km + conc)), 
                    data=subset(M3, M3$trtlist == trtlist2[i]),
                    start=list(Km=200, Vmax=2), trace=TRUE )
  
  # 提取参数矩阵并转为数据框,保留所有指标
  param_df <- as.data.frame(summary(loopmm.nls)$parameters)
  # 添加参数名称列(区分Km和Vmax)
  param_df$parameter <- rownames(param_df)
  # 添加分组标识
  param_df$trt <- trtlist2[i]
  
  # 将当前组结果存入列表
  result_list[[i]] <- param_df
}

# 合并所有组的结果为一个data.frame
final_df <- do.call(rbind, result_list)
# 重置行名,避免混乱
rownames(final_df) <- NULL

# 查看最终结果
head(final_df)

代码说明

  • summary(loopmm.nls)$parameters直接提取包含所有指标的参数矩阵,转成数据框后保留Estimate、Std. Error、t value、Pr(>|t|)的完整信息
  • 给每个结果添加parameter列(标记是Km还是Vmax)和trt列(标记所属分组)
  • 用列表存储每组结果,最后通过do.call(rbind, ...)合并,比循环内直接rbind更高效

可选:转换为宽格式(Km和Vmax指标同行显示)

如果需要将Km和Vmax的对应指标放在同一行,可以使用tidyr包的pivot_wider函数转换:

library(tidyr)

wide_format_df <- final_df %>%
  pivot_wider(
    id_cols = trt,
    names_from = parameter,
    values_from = c(Estimate, `Std. Error`, `t value`, `Pr(>|t|)`),
    names_sep = "_"
  )

# 查看宽格式结果
head(wide_format_df)

内容的提问来源于stack exchange,提问作者Katie Klaus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 07:35:21