在闪亮的应用程序中的反应表达式中使用 factor() 函数时出错

Getting error using factor() function inside a reactive expression in the shiny app

我正在开发一个用于回归分析的闪亮应用程序。当我想使用 factor() 函数将一些变量更改为因子时出现错误。

我希望用户 select 变量 he\she 想从 selectInoput() 更改为因子并使用反应函数将结果提供给新的数据框但是结果很奇怪! :(

我把我所做的简化版本放在这里。

花了一天时间,终于找到了解决办法。非常感谢您的帮助。

x <- c( 1:5 )
y <- c( 10:14)

df <- data.frame(
  x = x,
  y = y
)

library(shiny)


ui <- fluidPage(

    
    titlePanel(""),

    sidebarLayout(
        sidebarPanel(
           selectInput(inputId = "str", label = "which variables should be changed to factors",choices = names(df), multiple = T)
        ),
        
        

        mainPanel(
          verbatimTextOutput("output")
        )
    )
)


server <- function(input, output) {

  df_2 <- reactive({
    df[ , input$str ] <- factor(df[ , input$str ])
  })
  
  output$output <- renderPrint({
    str( df_2() )
  })

}


shinyApp(ui = ui, server = server)

您的代码只需要在 server 中稍作修改。

x <- c( 1:5 )
y <- c( 10:14)

df <- data.frame(
  x = x,
  y = y
)

library(shiny)


ui <- fluidPage(
  
  
  titlePanel(""),
  
  sidebarLayout(
    sidebarPanel(
      selectInput(inputId = "vars", label = "which variables should be changed to factors",choices = names(df), multiple = T)
    ),

    
    mainPanel(
      verbatimTextOutput("output")
    )
  )
)

server <- function(input, output) {
  
  selected_vars <- reactive(input$vars)
  
  df_2 <- reactive({
    df[selected_vars()] <- lapply(df[selected_vars()], as.factor)
    return(df)
  })
  
  output$output <- renderPrint({
    str(df_2())
  })
  
}

shinyApp(ui = ui, server = server)