Это даже проще, чем предполагает Себ.
c[is.na(c)] <- mean(c, na.rm = TRUE)
Здесь функция среднего значения возвращает одно число (а именно среднее значение всех значений в c
, которые не были NA
). Затем оператор присваивания <-
присваивает этот номер каждому элементу в c
, где is.na
возвращает TRUE
.
В качестве альтернативы попробуйте передать аргумент na.action = na.omit
в функцию предсказания.
Прямой перевод вашего скрипта Octave - что-то вроде
for(i in seq_along(c))
{
if(is.na(c[i]))
{
c(i) <- some_function(b[i], d[i])
}
}
Заметьте, однако, что в R, как и в Octave, циклы обычно уступают работе непосредственно на векторах.