R блестящий: почему я не могу применить функцию изменения класса на eventReactive - PullRequest
0 голосов
/ 19 декабря 2018

Я хочу построить код для изменения класса входного столбца в блестящем приложении.Код ниже может работать. Но когда я применяю функцию класса изменения (например, as.character, as.numeric) в df [, введите $ col] как df [, classFunction (input $ col)], он показывает странный результат.

Какой странный результат, подобный этому:

  • , когда я выбираю первый выбор в radioButtons, результат показывает вектор столбца;

  • когда я выбираю третий (as.factor) в radioButtons, он возвращает результаты as.factor (first_col_in_df), но не столбец, который я выбрал;

  • когда я выбираю другие функции, он показывает: Ошибка: выбраны неопределенные столбцы

Мой странный код, подобный этому:

    library(shiny)
    library(rio)
    library(anytime)

    options(shiny.maxRequestSize=500*1024^2,shiny.usecairo = FALSE)

    ui <- fluidPage(

        titlePanel("See the file table"),
        fluidRow(
            column(6,
                   fileInput("theFile","upload your file")
            ),
            column(6,
                   radioButtons("encode", "encoding way",
                                choices = c("Default" = "default",
                                            "UTF-8" = "utf_8"),selected = "default")
            ),
            column(8,
                   uiOutput("colToDesc")
            ),
            column(3,
                   radioButtons("class", "Which class is the variable",
                                choices = c("as.character" = "as.character",
                                            "as.numeric" = "as.numeric",
                                            "as.factor" = "as.factor",
                                            "as.Date" = "anydate",
                                            "as.datetime" = "anytime"),selected = "as.character")
            ),
            column(3,
                   actionButton("choice2", "Show variables Desc")
            ),

            column(12,
                   verbatimTextOutput("console")
            )
        )

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

        allData <- reactive({
            theFile <- input$theFile
            req(input$theFile)

            # Changes in read.table 
            if(input$encode == "default"){
                df <- import(theFile$datapath)  
            } else{
                df <- import(theFile$datapath,encoding = "UTF-8")
                return(df)
            }
        })


        output$colToDesc <- renderUI({
            cn <- colnames(allData())
            selectInput("colToDesc", "Select variable to Desc", 
                        choices  = cn,
                        size=10,
                        multiple=T, selectize=FALSE)
        }) 

        class <- eventReactive(input$choice2,{
            dat <- allData()
            class <- switch(
                input$class,
                as.character = as.character,
                as.numeric = as.numeric,
                as.factor =as.factor,
                anydate = anydate,
                anytime = anytime,
                as.character)
            class <- class(dat[,class(input$colToDesc), drop = FALSE])
        })



        output$console <-  renderPrint({

            print(class())
        })

    }

    shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...