R闪亮错误:在eventReactive和Desctools中使用时,找不到对象“输入”

时间:2018-12-04 07:45:15

标签: r shiny desctools

我知道它可能是重复的,我一直在寻求与之相似的几个问题,但是我仍然找不到为什么我的代码无法使用的问题。 将两个输入源编译到 eventReactive 部分时,将发生错误。

我的错误代码如下:

library(shiny)
library(rio)
library(DescTools)

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

ui <- fluidPage(

    titlePanel("See the file table"),
    fluidRow(
        column(4,
               fileInput("theFile","upload your file")
        ),
        column(4,
               radioButtons("encode", "encoding way",
                            choices = c("Default" = "default",
                                        "UTF-8" = "utf_8"),selected = "default")
        ),
        column(4,
               uiOutput("a_input")
        ),
        column(4,
               uiOutput("b_input")
        ),
        column(4,
               actionButton("choice3", "Show two variables comparing")
        ),
        column(12,
               verbatimTextOutput("console_comp")
        ),
        column(12,
               plotOutput("plot_Desc_comp")
        )
    )

)
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$a_input <- renderUI({
        cn <- colnames(allData())
        selectInput("a_input", "Select A variable to compare with Desc", 
                    choices  = cn,
                    size=10,
                    multiple=F, selectize=FALSE)
    })

    output$b_input <- renderUI({
        cn <- colnames(allData())
        selectInput("b_input", "Select B variable to compare with Desc", 
                    choices  = cn,
                    size=10,
                    multiple=F, selectize=FALSE)
    })


    data_Desc_a <- eventReactive(input$choice3, {
        req(allData())
        dat <- allData()
        dat[,input$a_input, drop = FALSE]
    })

    data_Desc_b <- eventReactive(input$choice3, {
        req(allData())
        dat <- allData()
        dat[,input$b_input, drop = FALSE]
    })

    output$console_comp <-  renderPrint({
        dat <- allData()
        var_a <- data_Desc_a()
        var_b <- data_Desc_b()
        mylist2 <- Desc(var_a ~ var_b, dat)
        print(mylist2)
    })

    output$plot_Desc_comp <-  renderPlot({
        dat <- allData()
        var_a <- data_Desc_a()
        var_b <- data_Desc_b()
        mylist2 <- Desc(var_a ~ var_b, dat)
        plot(mylist2)
    })

}
shinyApp(ui, server)

在我上传一个文件并选择了两个变量后,我想按“显示两个变量比较”按钮,就会出现错误代码。

未使用的参数(var_a〜var_b,dat)

即使我只使用一个来源,它也可以解决问题。

我的工作代码如下:

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(4,
               actionButton("choice2", "Show variables Desc")
        ),
        column(12,
               verbatimTextOutput("console")
        ),
        column(12,
               plotOutput("plot_Desc")
        )
    )

)
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)
    }) 

    data_Desc <- eventReactive(input$choice2, {

        req(allData())
        dat <- allData()
        dat[,input$colToDesc, drop = FALSE]
    })

    output$console <-  renderPrint({
        variables <- data_Desc()
        mylist <- Desc(variables,main = names(variables))
        print(mylist)
    })

    output$plot_Desc <-  renderPlot({
        variables <- data_Desc()
        mylist <- Desc(variables,main = names(variables))
        plot(mylist)
    })   
}

而且我可以确定DescTools包中 Desc 的功能可以像这样很好地工作:

Desc(temp[,91]~temp[,5],temp)

所以我的错误代码出了什么问题。

0 个答案:

没有答案