如何在R中对数据框子集应用drm函数进行剂量反应建模?
解决剂量反应建模的批量处理问题
你的代码报错是因为lapply的用法错误:你直接把drm调用写进去,但没指定每个子集作为数据源,反而把整个data_split传给了drm的data参数,导致它找不到单个数据框里的response列。下面是两种简洁的解决方案:
方案1:用lapply实现
先确保加载drc包,然后用匿名函数接收每个子集数据框:
library(drc) # 批量对每个子集建模 models <- lapply(data_split, function(sub_df) { drm(response ~ dose, data = sub_df, fct = LL.5()) })
方案2:用purrr::map实现(更简洁)
如果你习惯tidyverse风格,用map函数写法更短:
library(drc) library(purrr) # 批量建模 models <- map(data_split, ~ drm(response ~ dose, data = .x, fct = LL.5()))
注意事项
- 确认每个子集数据框里都存在
response和dose列,列名要完全匹配(大小写敏感) split后的列表已经自带由sample和date组合的名称,你可以用names(models)查看,方便后续提取特定样本/日期的模型
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

