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

R语言如何嵌套使用map函数批量生成多模型多数据集混淆矩阵

解决方案

你可以通过purrr的嵌套map语法实现需求,核心逻辑是外层遍历所有数据集,内层遍历所有模型,分别将当前遍历到的模型和数据集传入你写的ConfMat函数即可。

最简写法(purrr公式语法)

library(purrr)

conf_mat_list <- map(data_list, ~ map(model_fits, ConfMat, data = .x))

参数对应说明:

  • 外层map遍历data_list的每个元素,用.x指代当前遍历到的数据集,对应你原写法的y参数
  • 内层map遍历model_fits的每个元素,作为第一个参数传入ConfMat,对应你原写法的x参数(即模型对象)

返回结果的列表层级和你输入的列表顺序完全对应:第一层是train/test的结果,第二层是对应数据集下tree/forest/xgb的混淆矩阵。

如果需要按名称快速提取结果,可以先给两个列表命名后再计算:

# 给列表元素增加命名
names(data_list) <- c("train", "test")
names(model_fits) <- c("tree", "forest", "xgb")

conf_mat_list <- map(data_list, ~ map(model_fits, ConfMat, data = .x))

# 示例:直接提取测试集下XGBoost的混淆矩阵
conf_mat_list$test$xgb

等价显式匿名函数写法(可读性更高)

如果对purrr的公式语法不熟悉,可以用常规匿名函数写法,逻辑完全一致:

conf_mat_list <- map(data_list, function(current_data) {
  map(model_fits, function(current_model) {
    ConfMat(df = current_model, data = current_data)
  })
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:57:04