Недопустимый тип индекса «список» в k режимах в R - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть набор данных с 8848 наблюдениями с 46 переменными. При применении kmodes для требуемых столбцов это дает ошибку.

Я пробовал как ниже

library(klaR)
Data_Value <- read.csv("Path", header=TRUE)
var1<-subset(Data_Value,Data_Value$Improvement=="Improved")
var2<-subset(Data_Value,Data_Value$Improvement=="Not Improved")
data<-rbind(var1,var2[1:4424,])
clustering<-(data[c(2,3,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46)])
kmodes(na.omit(clustering),5, iter.max = 10,weighted = TRUE)

Я получаю ошибку ниже:

Error in `[.default`(weights[[j]], sapply(as.character(modes[, j]), function(z) return(which(names(weights[[j]]) ==  : 
  invalid subscript type 'list'

Когда я использовал 33 столбца в данных, которые он выдает выше ошибка. Пожалуйста, подскажите, где я ошибся?

dput (head (clustering, 5)):

structure(list(column2 = structure(c(1L, 1L, 3L, 1L, 1L), .Label = c("Adult", 
"Child", "Infant"), class = "factor"), column3 = structure(c(3L, 
5L, 5L, 5L, 5L), .Label = c("ALK", "DALK", "EK", "Others", "PK", 
"THPK"), class = "factor"), column30 = structure(c(1L, 
1L, 1L, 1L, 1L), .Label = c("Improved", "Not Improved"), class = "factor"), 
  column32 = c(FALSE, FALSE, FALSE, FALSE, TRUE), column33 = c(FALSE, 
    FALSE, FALSE, FALSE, TRUE), column34= c(FALSE, FALSE, 
    FALSE, FALSE, FALSE), column35 = c(FALSE, FALSE, 
    FALSE, FALSE, FALSE), column36 = c(FALSE, FALSE, 
    FALSE, FALSE, FALSE), column37 = c(FALSE, 
    FALSE, FALSE, FALSE, FALSE),column38 = c(FALSE, FALSE, 
    FALSE, FALSE, FALSE),column39 = c(FALSE, 
    FALSE, FALSE, FALSE, FALSE), column40 = c(FALSE, 
    FALSE, FALSE, FALSE, FALSE), column41 = c(FALSE, 
    FALSE, FALSE, FALSE, FALSE), column42 = c(FALSE, 
    FALSE, FALSE, FALSE, FALSE),column43 = c(FALSE, FALSE, 
    FALSE, FALSE, FALSE), column44 = c(FALSE, FALSE, FALSE, 
    FALSE, FALSE),column45 = c(FALSE, FALSE, FALSE, 
    FALSE, FALSE), column46= c(FALSE, FALSE, FALSE, FALSE, 
    FALSE)), row.names = c(4L, 5L, 7L, 13L, 14L), class = "data.frame")

...