首页 > 解决方案 > R闪亮错误:在eventReactive和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)

那么我的错误代码有什么问题。

标签: rshinydesctools

解决方案


推荐阅读