我执行一个用于概率模拟器的代码,该代码会产生错误。对于实例,代码可以是下一个:
m<-replicate(101,NaN)
for(i in seq(0,1, by=0.01)){
m[(i*100)+1]<-i+1
}
print(m)
它在m [30]和m [59]中产生错误,因为该值为NaN。输出向量是下一个:
[1] 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 1.14
[16] 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.29 NaN
[31] 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41 1.42 1.43 1.44
[46] 1.45 1.46 1.47 1.48 1.49 1.50 1.51 1.52 1.53 1.54 1.55 1.56 1.58 NaN 1.59
[61] 1.60 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.70 1.71 1.72 1.73 1.74
[76] 1.75 1.76 1.77 1.78 1.79 1.80 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89
[91] 1.90 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.00
感谢您的帮助
答案 0 :(得分:5)
问题是本文讨论的影响的变体:Why are these numbers not equal?
数字舍入错误导致m[(i*100)+1]
中的非整数索引号
尝试改用整数:
for(i in seq(0,100)){
m[i+1] <- i/100 + 1
}
答案 1 :(得分:3)
您可以通过舍入索引值来解决此问题:
for(i in seq(0,1, by=0.01)){
m[round((i*100)+1)]<-i+1
}