【发布时间】:2015-06-03 05:50:21
【问题描述】:
我试图在 R 中运行这个简单的代码,这就是我得到的:
table <- matrix(NA, nrow=10, ncol=1)
for (i in seq(0.01, 0.10, by=0.01)) {
table[i*100, ] <- i
}
table
# [,1]
# [1,] 0.01
# [2,] 0.02
# [3,] 0.03
# [4,] 0.04
# [5,] 0.05
# [6,] 0.07
# [7,] NA
# [8,] 0.08
# [9,] 0.09
#[10,] 0.10
如果我向后运行我的代码,它可以正常工作:
table <- matrix(NA, nrow=10, ncol=1)
for (i in seq(0.1, 0.01, by=-0.01)) {
table[i*100, ] <- i
}
table
# [,1]
# [1,] 0.01
# [2,] 0.02
# [3,] 0.03
# [4,] 0.04
# [5,] 0.05
# [6,] 0.06
# [7,] 0.07
# [8,] 0.08
# [9,] 0.09
#[10,] 0.10
有人知道怎么回事吗?
我在 Mac 上使用 R 版本 3.2.0。
【问题讨论】:
-
查看
all.equal(seq(0.01, 0.10, by=0.01)[7], 7)的结果。还有stackoverflow.com/a/9508558/3710546 -
结果是“平均相对差:99”。我不明白这与我的问题有什么关系。你能解释一下吗?
-
表示0.07*100不等于7,从浮点数角度看:cran.r-project.org/doc/FAQ/…
-
这是计算机科学中的一个已知问题。考虑以不同的方式创建表。
matrix(seq(0.01, 0.10, by=0.01), nrow=10, ncol=1) -
谢谢!但是为什么它会写入第 6 行呢?它不应该四舍五入并写入第 7 行吗?