关于for循环的混乱,带小数的序列

时间:2016-10-11 04:14:30

标签: r for-loop

我通过以下简单代码表达我的问题。向量a的元素最初被指定为0,我们使用for循环来重新分配值。 a的所有元素都应该是1.但是,第7个元素没有变化。任何人都可以解释为什么会发生这种情况。

> (s = seq(0.01,.1,0.01))
 [1] 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10
> (a = rep(0,length(s)))
 [1] 0 0 0 0 0 0 0 0 0 0
> for (i in s)  a[i*100] = 1
> a
 [1] 1 1 1 1 1 1 0 1 1 1

1 个答案:

答案 0 :(得分:1)

某种浮点舍入魔法。 参见:

as.integer(s[7]* 100)
# [1] 6
# as.integer(s * 100)
# [1]  1  2  3  4  5  6  6  8  9 10

所以第7个索引实际上是6。

将整数和索引循环到s更安全,而不是依赖于将浮点数转换为整数。

for (i in seq_along(s))
    a[i] = 1 # or possibly something involving s[i] for your application