Я хочу присвоить некоторое значение вектору, например:
a = rep(0, 101)
for(i in seq(0, 1, 0.01)){
u <- 100 * i + 1
a[u] <- u
}
a
plot(a)
Выход
> a
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 0 31 32 33 34
[35] 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 59 0 60 61 62 63 64 65 66 67 68
[69] 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
Есть проблемы на 29-м и 59-м элементах. Они должны быть 29 и 59, а получается 0, значение по умолчанию. И предыдущие значения, 28-е и 58-е, тоже неверны. Почему это происходит? Благодарю вас!
u <- 1000 * i / 10 + 1
проблема будет решена, это серьезная ошибка округления? - person Carlton Chen   schedule 05.12.2018as.integer(c(0.29*100+1,0.029*1000+1,0.0029*10000+1,0.00029*100000+1))
, он вернет либо 29, либо 30 в зависимости от случая, ноas.integer(round(c(0.29*100+1,0.029*1000+1,0.0029*10000+1,0.00029*100000+1)))
всегда вернет 30. Похоже, это проблема, связанная с целочисленным преобразованием, которое возвращает неточное число. Большего сказать не могу, к сожалению.. - person Lamia   schedule 05.12.2018