【问题标题】:R Shiny selectInput returning error object 'input' not foundR Shiny selectInput返回错误对象'输入'未找到
【发布时间】:2016-04-20 15:05:25
【问题描述】:

我正在尝试构建一个闪亮的应用程序,在不同的选项卡中显示随机森林的输出。在这里,我只为部分依赖图创建一个选项卡来显示我收到的错误。下面是全局、服务器和 ui 文件的代码。

全球.R

library(shiny)
setwd("C:/Users/rcaldwe4/Documents/Monthly Topic/Stackoverflow")

df <- data.frame(x1=sample(1:100,10000,replace=T),
                 x2=sample(1:100,10000,replace=T),
                 x3=sample(1:100,10000,replace=T),
                 y=as.factor(sample(0:1,10000,replace=T)))


train_x <- df[1:5000,-4]
train_y <- df[1:5000,4]
train1 <- data.frame(train_x,y=train_y)

test_x <- df[5001:10000,-4]
test_y <- df[5001:10000,4]

服务器.R

library(shiny)
library(randomForest)
library(AUC)
library(rpart)
library(lift)

#Define server logic required to output Random Forest
shinyServer(function(input,output){

  rfInput <- reactive({
    randomForest(x=train_x,y=train_y,importance=T,ntree=input$trees,keep.forest = T)
  })

  output$partDep <- renderPlot({
    partialPlot(x=rfInput(), pred.data=train1, x.var=input$select_var, which.class=1)
  })

})

ui.R

library(shiny)

shinyUI(
  fluidPage(
    titlePanel("Random Forest"),
    sidebarLayout(
      sidebarPanel(
        sliderInput("trees",
                    "Number of trees:",
                    min=0,
                    max=1000,
                    value=100,
                    step=50),
        selectInput("select_var", 
                    label = h4("Select variable for partial dependence plot"),
                    choices = names(train1)[1:3], 
                    selected = names(train1)[1])
      ),
      mainPanel(
        tabsetPanel(
          tabPanel("Dependence",
                   plotOutput("partDep"))
        )
      )
    )
  ))

用于构建树数的滑块输入工作正常。但是,当我尝试让用户为部分依赖图选择变量时,我得到了这个错误:

Warning: Error in eval: object 'input' not found

我不清楚“输入”有什么问题。我想知道在 partialPlot 函数中使用“输入”是否存在问题。任何建议都会很棒。

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    这是partialPlot 的问题。这在另一个问题here 中得到解决。唯一的解释是一些绘图函数使用了一些非标准的评估。

    如果您将server.R 中的partDep 部分更改为以下内容,则可以:

    output$partDep <- renderPlot({
       do.call("partialPlot", 
               list(x=rfInput(), pred.data=train1, x.var = input$select_var, which.class = 1))
    })
    

    【讨论】:

      猜你喜欢
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      相关资源
      最近更新 更多