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

R语言:提取符合条件的SUM值与矩阵型结果到新数据框

R语言tidyverse+pmap结果提取方案

1. 基础代码准备

先构造参数网格和自定义函数,模拟业务场景:

library(tidyverse)

# 创建包含所有参数组合的网格
param_grid <- expand_grid(
  Aparam = c(1, 1, 2, 2),
  Bparam = c(10, 20)
)

# 自定义返回列表的函数(包含SUM、乘积、矩阵)
my_function <- function(Aparam, Bparam) {
  sum_val <- Aparam + Bparam
  prod_val <- Aparam * Bparam
  mat_val <- matrix(c(Aparam, Bparam, Bparam, Aparam), nrow = 2)
  
  list(SUM = sum_val, PRODUCT = prod_val, MATRIX = mat_val)
}

# 用pmap批量执行函数,结果并入参数网格
param_grid <- param_grid %>%
  mutate(result = pmap(list(Aparam, Bparam), my_function))

2. 提取所有符合条件的SUM值

针对Aparam=1的所有参数组合,一次性提取对应的SUM值:

# 过滤+提取SUM值
filtered_sums <- param_grid %>%
  filter(Aparam == 1) %>%
  pull(result) %>%
  map_dbl("SUM")

# 输出结果
filtered_sums
#> [1] 11 21

逻辑:先筛选符合条件的参数行,再提取结果列表,最后用map_dbl批量取出每个列表中的SUM元素,得到所有符合条件的SUM值集合。

3. 提取所有矩阵到新数据框

方案1:合并为带参数标识的单数据框

把所有矩阵转换为长格式,同时保留原参数信息,方便后续分析:

matrix_combined_df <- param_grid %>%
  mutate(
    # 将矩阵转为tibble,添加行索引
    mat_tibble = map(result, ~ as_tibble(.x, .name_repair = ~ str_c("col", seq_along(.x)))) %>%
      map(~ mutate(.x, row_idx = row_number()))
  ) %>%
  # 展开矩阵数据,保留原参数
  unnest(mat_tibble)

# 查看结果
matrix_combined_df

方案2:每个矩阵存为独立数据框

如果需要将不同参数组合的矩阵单独保存为数据框(按参数命名):

# 生成数据框名称,批量创建并存入全局环境
param_grid %>%
  mutate(
    df_name = str_c("matrix_A", Aparam, "_B", Bparam),
    mat_df = map(result, ~ as_tibble(.x, .name_repair = ~ str_c("col", seq_along(.x))))
  ) %>%
  select(df_name, mat_df) %>%
  deframe() %>%
  list2env(envir = .GlobalEnv)

# 此时全局环境中会生成如matrix_A1_B10、matrix_A1_B20等独立数据框

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:42:22