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

如何在R语言中筛选矩阵第一列为最小值的行 适配Nelder-Mead优化场景

问题解决方法

你生成的out矩阵结构为:第一列为Nelder-Mead优化输出的目标函数值,第二、三列为对应的参数x1、x2,筛选需求可以通过以下几种方式实现:

  • 方法1:基础R实现(无需额外安装依赖,推荐优先使用)
    直接用which.min()定位第一列最小值的行索引,按索引提取即可:

    # 提取第一列最小值对应的行
    min_target_row <- out[which.min(out[, 1]), ]
    # 查看结果
    min_target_row
    

    如果存在多个行的第一列值同为最小值,需要提取所有符合条件的行,使用以下代码:

    all_min_rows <- out[out[, 1] == min(out[, 1]), ]
    
  • 方法2:tidyverse风格实现(适合后续需要继续做数据处理的场景)
    如果你习惯用dplyr处理数据,可以将矩阵转为数据框后筛选:

    library(dplyr)
    # 转为数据框并命名列,筛选最小值对应的行
    min_row_df <- as.data.frame(out) %>%
      setNames(c("target_value", "x1", "x2")) %>%
      filter(target_value == min(target_value))
    

提示:你代码中每次迭代的初始参数x、y是随机生成的,因此每次运行得到的out矩阵结果会有差异,如果需要固定复现结果,可以在for循环前加set.seed(任意整数)固定随机种子,比如set.seed(123)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:24:01