R语言循环索引跳值问题:如何修正FORMULA[i]索引错误?
问题原因与解决方案
你遇到的核心问题是:R语言中向量的索引必须是正整数、负整数或逻辑值,但你定义的SEQ里是1.1、1.2这类浮点数,用它们做索引时,R会强制将其转换为整数,导致重复覆盖同一个位置,最终得到错误结果。
修正方法1:用位置索引循环
把循环变量换成向量的位置序号(从1到向量长度),再通过序号取SEQ中的元素计算:
SEQ = seq(1,2,.1) FORMULA = numeric(length(SEQ)) for (i in 1:length(SEQ)) { current_val = SEQ[i] FORMULA[i] <- current_val^2 }
修正方法2:用R的向量化操作(推荐)
R原生支持向量化运算,完全不需要写循环,直接对整个向量做计算,代码更简洁且效率更高:
SEQ = seq(1,2,.1) FORMULA = SEQ^2
执行以上任意一种方法后,FORMULA都会正确存储SEQ中每个元素的平方值。
内容的提问来源于stack exchange,提问作者bvowe
相关产品推荐
相关产品推荐

