2015-08-26 2 views
5

Я использую пакет randomForest для классификации бинарной переменной результата со стандартным процессом. Я первый должен был заставить изменения всех переменные, чтобы убедиться, что они были числовыми, а затем использовал na.roughfix для обработки пропущенных значений:Ошибка отсутствующего значения в пакете randomForest R

data <- read.csv("data.csv") 
data <- lapply(data, as.numeric) 
data <- na.roughfix(data) 

Тогда я запустить модель:

model <- randomForest(as.factor(outcome) ~ V1 + V2...+ VN, 
     data=data, 
     importance=TRUE, 
     ntree=500) 

и я получаю следующее ошибка:

Error in na.fail.default(list(as.factor(outcome) = c(2L, 2L, 1L, : missing values in object

na.roughfix вменения должны позаботиться об этом (я получил его на работу до и research on here shows that it should work), не так ли? Какие-либо предложения?

ответ

5

Ваш номер lapply не сделал то, что вы ожидали от него. Результат больше не является фреймом данных, а просто списком. В результате метод data.framena.roughfix не отправляется, просто метод по умолчанию, который просто возвращает его первый аргумент, если он не является атомарным (что явно не соответствует вашему списку).

Несколько подлый способ преобразовать каждый столбец в числовой, но сохранить свойство кадр данных будет:

data[] <- lapply(data,as.numeric) 

В качестве альтернативы, вы можете просто преобразовать его обратно через as.data.frame.

+0

благодарит за ответ. Я уже пробовал решение 'as.data.frame' раньше. Я повторил его и дал 'data [] <- lapply (data, as.numeric)' запуск тоже, и оба до сих пор выплюнули ту же ошибку. – bencrosier

+0

@ bencrosier Ну, тогда, если вам нужна более конкретная помощь, вам придется предоставить воспроизводимый пример. – joran