我通过以下简单代码表达我的问题。向量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
答案 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