for循环下的selectinput功能。原因是我需要减少代码长度

时间:2019-08-27 18:19:01

标签: r

我在下面的代码中遇到了挑战。我试图通过合并for循环下的Selectinput来减少代码。我有一个数据框

  df <- structure(list(A = structure(c(1L, 4L, 6L, 1L, 8L, 2L, 7L, 3L, 
  5L, 5L, 1L, 8L, 2L, 7L, 2L), .Label = c("asd", "dfg", "fgdsgd", 
  "fsd", "gdfgd", "gs", "sdfg", "sf"), class = "factor"), B = c(29L, 
  24L, 46L, 50L, 43L, 29L, 32L, 24L, 35L, 39L, 33L, 47L, 53L, 26L, 
  31L), C = structure(c(8L, 5L, 1L, 6L, 3L, 2L, 9L, 7L, 6L, 3L, 
  2L, 9L, 8L, 8L, 4L), .Label = c("asd", "er", "fg", "gf", "gfd", 
  "gfg", "qw", "sf", "tr"), class = "factor"), D = c(36L, 56L, 
  39L, 26L, 56L, 35L, 27L, 31L, 33L, 45L, 34L, 27L, 43L, 40L, 56L
  ), E = structure(c(8L, 5L, 1L, 6L, 3L, 2L, 9L, 7L, 6L, 3L, 2L, 
  9L, 8L, 8L, 4L), .Label = c("asd", "er", "fg", "gf", "gfd", "gfg", 
  "qw", "sf", "tr"), class = "factor"), F = c(44L, 34L, 37L, 23L, 
  37L, 51L, 28L, 36L, 33L, 31L, 39L, 43L, 25L, 37L, 43L)), class = 
  "data.frame", row.names = c(NA, 
  -15L))
   library(shiny)
   ui <- fluidPage(
   tabsetPanel(tabPanel(
   "Factor_Univariate_Analysis",sidebarLayout(
   sidebarPanel(
    for(i in names(Filter(is.factor,df)))
    {
      column(h6(selectInput("se1",i,choices = c(factor(df[-i])))),width = 
    11,height= 20,offset = 0)
    },
    mainPanel(h5(plotOutput("Plot1",width = 600,height = 1500)))
    )
    )
    ))
    server <- function(input, output, session) {
    }
    shinyApp(ui, server)

在此数据集中,有3个因子为“ A”,“ C”,“ E”。因此,我需要将它们作为SelectInput并将其因素下拉。例如,

A列具有因子(asd,fsd,gs,asd,sf,dfg,sdfg,fgdsgd,gdfgd,gdfgd,asd,sf,dfg,sdfg,dfg)。我需要这些作为下拉列表。我可以做到这一点。但是我需要在for循环下执行此操作,以便无需输入所有因素。希望我的观点清楚并有意义

0 个答案:

没有答案