子集数据框时的“重影”因素

时间:2018-08-26 09:30:52

标签: r shiny r-caret shinydashboard

我有一个数据框( TablaTotal ),具有以下级别:

> levels(TablaTotal$Enfermedad)
[1] "Disferlina" "OPMD"       "Laminas"    "Pompe"      "Fshd"       "SarcoG"     "Calpaina"   "Distrofina" "ANO5"

我想按级别过滤它。在checkboxGroupInput( TablasSeleccionadas )中选择要过滤的级别:

checkboxGroupInput("TablasSeleccionadas", 
   h3("Entrenar para:"),
   choices = list("Disferlina" = "Disferlina", 
                  "OPMD" = "OPMD", 
                  "Laminas" = "Laminas",
                  "Pompe"="Pompe",
                  "Fshd"="Fshd",
                  "SarcoG"="SarcoG",
                  "Calpaina"="Calpaina",
                  "Distrofina"="Distrofina",
                  "ANO5"="ANO5")
)

我通过 subset()函数创建子集 SubTablaTotal

SubTablaTotal <<- subset(TablaTotal,Enfermedad %in%c(input$TablasSeleccionadas))

显然,结果是有效的,至少当我通过 view(SubTablaTotal)查看数据框时,它看起来还可以:我仅在复选框上选择了级别。但是当我检查水平时,会得到以下结果:

> levels(SubTablaTotal$Enfermedad)
[1] "Disferlina" "OPMD"       "Laminas"    "Pompe"      "Fshd"       "SarcoG"     "Calpaina"   "Distrofina" "ANO5"

我不希望拥有所有级别。然后在创建 DataPartition 时收到以下警告:

  

createDataPartition中的警告(SubTablaTotal $ Enfermedad,p =   input $ indiceP,:某些类没有记录(Fshd,SarcoG,   Calpaina,Distrofina,ANO5),这些将被忽略

当尝试训练模型时,出现以下错误:

  

错误:结果中的一个或多个因子水平没有数据:   'Fshd','SarcoG','Calpaina','Distrofina','ANO5'

我是否错过了subset()功能的任何要点?

谢谢。

1 个答案:

答案 0 :(得分:-1)

在A. Suliman评论之后,可以通过以下方式解决此问题

SubTablaTotal$Enfermedad<-factor(SubTablaTotal$Enfermedad)