Это потому, что 0.9:1
дает вам только одно число, которое составляет 0,9.Попробуйте,
0.9:1
#[1] 0.9
Следовательно, он заменяет эти числа на 0,9.
Допустим, вам нужна последовательность как
vals <- seq(0.9, 1, 0.01)
vals
#[1] 0.90 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00
Теперь мы можем sample
в этой последовательности
df[is.na(df)] <- sample(vals, sum(is.na(df)), replace = TRUE)
df
# Brand year mpg reputation Luxury
#1 Honda 2010 30 8.5 5.00
#2 Honda 2011 28 8.5 5.50
#3 Dodge 2010 20 6.5 6.00
#4 Dodge 2011 23 7.0 6.50
#5 Mercedes 2010 22 9.5 0.91
#6 Mercedes 2011 25 9.0 0.92
данные
df <- structure(list(Brand = structure(c(2L, 2L, 1L, 1L, 3L, 3L),
.Label = c("Dodge",
"Honda", "Mercedes"), class = "factor"), year = c(2010L, 2011L,
2010L, 2011L, 2010L, 2011L), mpg = c(30L, 28L, 20L, 23L, 22L,
25L), reputation = c(8.5, 8.5, 6.5, 7, 9.5, 9), Luxury = c(5,
5.5, 6, 6.5, NA, NA)), class = "data.frame", row.names = c(NA, -6L))