首页 > 解决方案 > 基于 CSV 文件的 R 闪亮子集数据帧中的错误

问题描述

我正在使用 iris 数据集使用以下代码在 R 闪亮中创建动态更新

 write.csv(iris, file = "iris.csv", row.names = F)
# to create a local version of iris dataset

# next create UI


  ui <- fluidPage(


   fileInput("file", "Browse",
        accept = c("text/csv",
                   "text/comma-separated-values,text/plain",
                   ".csv")
    ),
   selectInput(inputId = "Speciesname", label = "Name",choices = 
    NULL,selected = NULL),
   tableOutput("data")
   )


   #Create server
    server <- function(input, output,session) {



 df = reactive({
 req(input$file)
 return(read.csv(input$file$datapath))
 })

  observe({
  choices1 = unique(df()$Species)
  updateSelectInput(session,"Speciesname", choices =  choices1)
  })
  output$data <- renderTable({
  req(input$Speciesname)
  df[as.character(input$Speciesname), ]
  }, )
   }


 #Run app
 shinyApp(ui, server)

我能够读取文件。但是子集显示以下错误和闪亮的应用程序

 Warning: Error in [: object of type 'closure' is not subsettable
 [No stack trace available]

我无法理解或解决此错误。当我不使用数据集的本地副本但使用内置的 R iris 数据集时,代码运行。我请求有人在这里指导我

标签: rcsvshinysubset

解决方案


这应该做的工作

library(shiny)
write.csv(iris, file = "iris.csv", row.names = F)
# to create a local version of iris dataset

# next create UI

ui <- fluidPage(


  fileInput("file", "Browse",
            accept = c("text/csv",
                       "text/comma-separated-values,text/plain",
                       ".csv")),
  selectInput(inputId = "Speciesname", label = "Name",choices = 
                NULL,selected = NULL),
  tableOutput("data")
)


#Create server
server <- function(input, output,session) {

  df = reactive({
    req(input$file)
    return(read.csv(input$file$datapath))
  })

  observe({
    choices1 = unique(df()$Species)
    updateSelectInput(session,"Speciesname", choices =  choices1)
  })

  output$data <- renderTable({
    req(input$Speciesname)
    df()[df()$Species %in% input$Speciesname,]
  })
}


#Run app
shinyApp(ui, server)

推荐阅读