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

如何在R中对DataFrame第3行数值做±0.2误差范围的等值比较

问题解决方案

你原代码的核心问题是采用了精确等值判断,同时存在列名输出的索引错误,按以下方式修改即可得到预期结果:

核心修改点

  1. 将精确等值判断==替换为abs(值1 - 值2) <= 0.2,满足±0.2误差范围内判定为相等的逻辑
  2. 修正原代码中第二个列名输出时误用i索引的问题,避免输出两个相同列名
  3. 单独提取数值列处理,避免误操作第一列的NAME字符串字段

可运行代码示例

首先构造和你结构一致的示例DataFrame:

data <- data.frame(
  NAME = c("first", "second", "third", "four"),
  A = c(3, 1, 7, 2),
  B = c(2, 2, 7.1, 1),
  C = c(4, 3, 7.5, 0),
  D = c(5, 4, 6.9, 5)
)

修改后的判断逻辑:

# 提取A-D对应的数值列索引、列名
num_col_idx <- 2:5
num_col_names <- colnames(data)[num_col_idx]

# 遍历所有列组合做近似判断
for (i in 1:(length(num_col_idx)-1)) {
  for (j in (i+1):length(num_col_idx)) {
    if (abs(data[3, num_col_idx[i]] - data[3, num_col_idx[j]]) <= 0.2) {
      print(paste("the column", num_col_names[i], "and", num_col_names[j], "are equal"))
    }
  }
}

运行输出

[1] "the column A and B are equal"
[1] "the column A and D are equal"

完全符合你的预期输出要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:27:02