R中order函数未按预期工作的问题咨询
问题解析:你误解了
order()函数的返回逻辑 order()函数的作用是返回一组索引,用这些索引提取原向量时,会得到升序排列的结果。直白点说:order(v)[1]是原向量v里最小值的位置order(v)[length(v)]是原向量v里最大值的位置
结合你的场景具体拆解:
- 人均收入最高值6315确实在原数据集第2行,用
which.max(state.x77[,2])可以直接验证这一点。 - 执行
order(state.x77[,2])后,返回的索引列表是按收入从低到高排列的原数据行号。你看到的“第4个索引”对应的是收入第4低的州的原位置,和最高收入的州完全无关。 - 要找到最高收入州在排序后的位置,得看
order(state.x77[,2])的最后一个元素——它会是2,对应原数据的第2行,这才是正确对应关系。
- 人均收入最高值6315确实在原数据集第2行,用
如果想直接得到每个州收入的排名(比如最高的排第50),应该用
rank()函数:income_rank <- rank(state.x77[,2]) # 查看最高收入州的排名(默认升序规则下,最高值的rank为50) income_rank[2]
内容的提问来源于stack exchange,提问作者Ankit Doshi
相关产品推荐
相关产品推荐

