R语言for循环遍历索引取值仅返回最后一个值的问题排查
问题原因
核心问题是for循环内的赋值逻辑错误:每次循环执行maxinnum<-c(maxstaCode$gateInComingCnt[i])时,都会完全覆盖maxinnum之前存储的内容,而不是把新取到的值追加到已有结果里。10次循环跑完,前9次存入的值全被覆盖,最终maxinnum就只剩最后一次迭代取到的第138行对应值1491299。
另外你代码最后输出时还存在变量名拼写错误,把定义的maxinnum写成了maxinum,属于额外的笔误。
修复方案
你可以选以下任意一种方式实现需求:
- 方案1:修正for循环逻辑
先初始化空的结果向量,每次循环把新取到的值追加到向量末尾,而不是直接覆盖:# 初始化空向量存储结果 maxinnum <- c() for(i in aa){ # 追加新值到已有结果 maxinnum <- c(maxinnum, maxstaCode$gateInComingCnt[i]) } maxinnum - 方案2:直接用R的向量化索引(更推荐)
R原生支持向量作为索引批量取值,完全不需要写for循环,代码更简洁、运行效率更高:maxinnum <- maxstaCode$gateInComingCnt[aa] maxinnum
补充提示:你最开始写order语句时,$和字段名gateInComingCnt之间多打了一个空格,虽然多数情况下R可以正常识别,但建议去掉多余空格避免潜在的解析问题。
内容的提问来源于stack exchange,提问作者bo_
相关产品推荐
相关产品推荐

