You need to enable JavaScript to run this app. R语言如何查找dataframe中距离左上角曼哈顿距离最小的TRUE值位置
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何查找dataframe中距离左上角曼哈顿距离最小的TRUE值位置

R实现查找曼哈顿距离最小的TRUE单元格坐标

实现逻辑

你需求的曼哈顿距离计算公式为 (行索引 - 1) + (列索引 - 1),实现步骤如下:

  1. 提取所有值为TRUE的单元格的行列索引
  2. 批量计算每个TRUE单元格的曼哈顿距离
  3. 筛选出距离最小的所有坐标
  4. 转换为要求的列表格式返回

完整代码

library(tidyverse)

# 你的示例数据
df <- tibble(
  a = c(FALSE, FALSE, FALSE, TRUE),
  b = c(FALSE, TRUE, TRUE, FALSE),
  c = c(FALSE, FALSE, TRUE, FALSE)
)

# 核心实现函数
get_min_dist_true_pos <- function(df) {
  # 获取所有TRUE的行列索引
  true_pos <- as.data.frame(which(df == TRUE, arr.ind = TRUE))
  # 计算曼哈顿距离
  true_pos$dist <- (true_pos$row - 1) + (true_pos$col - 1)
  # 筛选最小距离的坐标
  min_pos <- true_pos[true_pos$dist == min(true_pos$dist), c("row", "col")]
  # 转换为要求的列表格式
  unname(apply(min_pos, 1, c, simplify = FALSE))
}

# 调用函数得到结果
result <- get_min_dist_true_pos(df)
print(result)

输出结果

用你提供的示例数据运行后,输出为:

[[1]]
row col 
  2   2 

即返回结果为list(c(2,2)),符合预期。如果存在多个相同最小距离的TRUE单元格,会自动在列表中追加对应的坐标向量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 06:45:00