2015-08-26 15 views
5

Tôi đang sử dụng gói randomForest để phân loại biến kết quả nhị phân với quy trình chuẩn. I 1 had to force a change on all variables to make sure they were numeric and then used na.roughfix to handle missing values:Lỗi giá trị thiếu trong gói randomForest của R

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

Then i run the model:

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

and I get the following lỗi:

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

Thông báo bắt buộc phải thực hiện việc này (tôi đã làm việc trước và research on here shows that it should work), phải không? Bất kỳ đề xuất?

Trả lời

5

Đường dây lapply của bạn không làm những gì bạn mong đợi. Kết quả không còn là khung dữ liệu nữa, chỉ là một danh sách. Do đó, phương thức data.frame của na.roughfix không được gửi đi, chỉ là phương thức mặc định mà chỉ trả về đối số đầu tiên nếu nó không phải là nguyên tử (danh sách của bạn không rõ ràng).

Cách hơi lén lút để chuyển đổi mỗi cột để số nhưng giữ lại tài sản khung dữ liệu sẽ là:

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

Ngoài ra, bạn chỉ có thể chuyển đổi nó trở lại thông qua as.data.frame.

+0

cảm ơn phản hồi. Tôi đã thực sự thử giải pháp 'as.data.frame' trước đây. Tôi thử lại nó và cung cấp cho 'dữ liệu [] <- lapply (dữ liệu, as.numeric)' một chạy quá, và cả hai vẫn nhổ lên cùng một lỗi. – bencrosier

+0

@bencrosier Vâng, sau đó nếu bạn muốn trợ giúp cụ thể hơn, bạn sẽ phải cung cấp một ví dụ tái sản xuất. – joran

Các vấn đề liên quan