【问题标题】:R shiny - correct use of an input variable, seems like a scope errorR闪亮-正确使用输入变量,似乎是范围错误
【发布时间】:2015-01-16 05:45:18
【问题描述】:

我认为 input$variable 的范围有问题。以下是代码说明。

在我的 ui.R 文件中,我有一个 selectInput,它定义了 server.R 文件中 input$variable 所取的值。 selectInput如下:

selectInput("variable", "Variable:",
     c("Handling of Complaints" = "complaints",
       "Does not allow special privileges" = "privileges",
       "Opportunity to Learn" = "learning",
       "Raises based on Performance" = "raises",
       "Too Critical" = "critical",
       "Advancement" = "advance")),

在我的 server.R 文件中,我有一个 renderUI,它在一个 with 和一个 qplot 内使用这个 input$variable,如下所示:

grid <- with(attitudeData, expand.grid(
     xgrid = seq(min(input$variable), max(input$variable), length = dim(attitudeData)[1]),
     ygrid = levels(sex)
    ))

ggattitude <- qplot(x=input$variable, y=rating, 
      data=attitudeData, color=sex) + geom_line(data=grid)

attitudeData 是带有变量(又名特征或预测变量)的数据框,其名称在 selectInput 中定义。

如果我直接在代码中使用任何变量名称,比如投诉,它可以工作,并且我的绘图会按照我想要的方式生成该变量。但是使用 input$variable 我无法让它工作。这就是为什么我认为问题与 input$variable 的范围有关。

任何帮助将不胜感激。

以下是我从闪亮中得到的错误,这对我没有多大帮助。

Error in seq.default(min(input$variable), max(input$variable), length = dim(attitudeData)[1]) :  'from' cannot be NA, NaN or infinite

如果我用with中的投诉替换input$variable,在qplot中使用的错误如下:

Error in eval(expr, envir, enclos) : object 'complaints' not found

提前感谢您为我提供的任何帮助。

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    您可以添加打印语句来阐明 R 将什么视为输入。在您的服务器文件中:

    grid <- with(attitudeData, expand.grid(
         print(input$variable) 
         xgrid = seq(min(input$variable), max(input$variable), length = dim(attitudeData)[1]),
         ygrid = levels(sex)
        ))
    
    ggattitude <- qplot(x=input$variable, y=rating, 
          data=attitudeData, color=sex) + geom_line(data=grid)
    

    此输出将打印到 R 控制台。我有一种感觉,您的输入没有呈现为“投诉”。

    【讨论】:

      【解决方案2】:

      min("complaints") 应该返回什么?因此,您将字符串作为参数提供给函数 min(),如果这是您想要的,它与 min(complaints) 不同。

      还是有其他问题,比如:

      xgrid = seq(min(input$variable), max(input$variable), length = dim(attitudeData)[1])

      我想知道你是否真的尝试这样做:

      xgrid = seq(min(attitudeData[input$variable]), max(attitudeData[input$variable]), length = dim(attitudeData)[1])
      

      【讨论】:

        猜你喜欢
        • 2016-11-17
        • 2014-05-15
        • 2015-05-10
        • 2015-04-28
        • 2019-07-18
        • 1970-01-01
        • 2015-04-13
        • 1970-01-01
        • 2018-08-29
        相关资源
        最近更新 更多