R циклы + прогнозирование () - PullRequest
0 голосов
/ 06 декабря 2011

Привет, я новичок в R (начинающий программист в целом), и справочные документы меня просто убивают.

Предположим, у меня есть матрица [a, b, c, d]. Я завершил 2 регрессиикакой-то а ~ б + с + д.Моя цель состоит в том, чтобы сделать предикат () для переменной «а» в наборе тестовых данных, но с полон NA.Как заменить NA в c, используя модель, которую я создал?

Если это поможет, это цикл, который я бы сделал в Octave,

 for i:length(c)
    if c(i)=NA  
    c(i)=some_function(b,d);<---- I tried to bold this but it came out wrong
 end

Спасибо

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Это даже проще, чем предполагает Себ.

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, циклы обычно уступают работе непосредственно на векторах.

0 голосов
/ 06 декабря 2011

Вы имеете в виду что-то вроде

c <- ifelse(is.na(c), mean(c, na.rm=TRUE), c)

, вы можете проверить файлы справки ?ifelse и ?is.na.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...