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

为什么R语言中相同数据按索引取值和which查询得到不同结果?

索引不一致的常见原因

  • 核心原因是你混淆了Excel行号和R中向量的实际位置索引:
    1. 如果你是直接对照Excel里的可视行号写的索引215,大概率Excel里存在隐藏行、过滤行,你用的读入函数(比如readxl::read_excel默认配置)不会读取这些隐藏行,因此原始Excel的第215行,读入R之后对应的向量位置就是163,中间的差值就是被跳过的隐藏行数量。
    2. 如果你的data$response.keys是命名向量,向量的名称对应原始Excel的行号,那你用[215]取数的时候是按照名称匹配取值,而which()返回的是向量的实际物理位置,所以会出现名称为215的元素实际在第163位的情况。
  • 你两种写法结果都正确的原因:刚好你取的两个位置的response.keys值都是s,所以判断逻辑结果一致。

验证方法

你可以运行下面的代码确认:

# 查看两个位置的实际值
print(data$response.keys[163])
print(data$response.keys[215])

# 查看向量是否有命名
print(names(data$response.keys))

# 查看读入的总数据行数,和Excel里的总行数对比
print(nrow(data))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:36:03