Ошибка: объект типа «замыкание» не является поднабором - PullRequest
0 голосов
/ 27 июня 2019

Я получаю следующую ошибку при выполнении нижеуказанного фрагмента кода. Любая помощь по этому вопросу очень ценится.

"ERROR:object of type 'closure' is not subsettable"

пытался найти помощь, но не решил мою проблему.

library(shiny)

ui <- fluidPage(tabsetPanel(
  type = "pills",
  tabPanel(
    "Data Upload",
    # App title ----
    titlePanel("Uploading Files"),

    # Sidebar layout with input and output definitions ----
    sidebarLayout(

      # Sidebar panel for inputs ----
      sidebarPanel(

        # Input: Select a file ----
        fileInput("file1", "Choose CSV File",
          multiple = FALSE,
          accept = c(
            "text/csv",
            "text/comma-separated-values,text/plain",
            ".csv"
          )
        ),

        # Horizontal line ----
        tags$hr(),

        # Input: Checkbox if file has header ----
        checkboxInput("header", "Header", TRUE),

        # Input: Select separator ----
        radioButtons("sep", "Separator",
          choices = c(
            Comma = ",",
            Semicolon = ";",
            Tab = "\t"
          ),
          selected = ","
        ),

        # Input: Select quotes ----
        radioButtons("quote", "Quote",
          choices = c(
            None = "",
            "Double Quote" = '"',
            "Single Quote" = "'"
          ),
          selected = '"'
        ),

        # Horizontal line ----
        tags$hr(),

        # Input: Select number of rows to display ----
        radioButtons("disp", "Display",
          choices = c(
            Head = "head",
            All = "all"
          ),
          selected = "head"
        )
      ),

      # Main panel for displaying outputs ----
      mainPanel(

        # Output: Data file ----
        tableOutput("contents")
      )
    ), hr(),

    print("~~~~~~~~~~~~~~~~~~~~footer~~~~~~~~~~~~~~~~~~~~")
  ),
  tabPanel("Variable Information"), tabPanel("Create new Variables"), tabPanel("Correlations")
))

server <- shinyServer(function(input, output) {
  reactive({
    req(input$file1)
  })

  tryCatch({
    df <- reactive({
      read.csv(input$file1$datapath,
        header = input$header,
        sep = input$sep,
        quote = input$quote
      )
    })
  },
  error = reactive({
    function(e) {
      # return a safeError if a parsing error occurs
      stop(safeError(e))
    }
  })
  )


  output$contents <- renderTable({
    req(input$file1)
    # when reading semicolon separated files,
    # having a comma separator causes `read.csv` to error
    df()


    if (input$disp == "head") {
      return(head(df))
    }
    else {
      return(df)
    }
  })
})

shinyApp(ui, server)

Мне нужно создать объект для загрузки данных и использовать один и тот же объект на нескольких вкладках. При этом я получаю сообщение об ошибке «объект типа« замыкание »не является поднабором»

1 Ответ

0 голосов
/ 27 июня 2019

У вас отсутствует скобка для head(df()) в output$contents

  output$contents <- renderTable({
    req(input$file1)
    # when reading semicolon separated files,
    # having a comma separator causes `read.csv` to error
    # df()
    if (input$disp == "head") {
      # return(head(df()))
      head(df())
    }else {
      # return(df)
      df()
    }
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...