获取输入$ variable Shiny RStudio的最大值和最小值

时间:2014-05-29 23:19:26

标签: r variables rstudio shiny

我的名字是Nate,我正在尝试使用Shiny from RStudio构建一个小数据分析工具。

现在我正在使用我自己的数据,但值是数字的......让我们假装我正在使用R附带的mtcars数据集。

我想: 1.允许我的用户通过下拉菜单从数据框中选择一个数字变量

  1. 让计算机计算所述变量的最小值和最大值

  2. 允许我的用户从滑块输入

  3. 输入1到50之间的数字
  4. 将第一个变量的最大值和最小值之差除以从滑块输入中获得的值

  5. 我得到的第一个错误是: 1.二元运算符的非数字参数

    所以我尝试使用as.numeric()强制变量,但这导致了我的第二个错误:

    1. 强制引入的NAs
    2. 在我的server.R文件中放置一个print(max(input $ Var)行给我变量名而不是数字。

      对此的任何帮助将不胜感激。我已经发布了下面的部分ui.r和server.r文件。先感谢您。

      ui.R:

      library(shiny)
      load('mtcars')
      shinyUI(pageWithSidebar(  
        headerPanel("MtCars Interactive Analysis Tool"),
        sidebarPanel(
      selectInput(inputId = "histVar",
      label= "Pick Your Variable",
      choices=names(mtcars),
      selected = NULL)),
      
      sliderInput(inputId = "binNum",
      label = h5("Number of bins for Histogram--1 through 50 are allowed"),
      min = 1,
      max = 50,
      value = 15, 
      step = 1)
      
      mainpanel(...blah blah blah) 
      

      server.R:

      library(shiny)
      load("mtcars")
      
      
      shinyServer(function(input, output) {
      
      output$histPlot <- renderPlot({
      
        varRangeGet <- range(input$histVar)
        #print(varRangeGet)
        #print(class(varRangeGet))
        #print(max(input$histVar))
        realRange<-(varRangeGet[[2]]- varRangeGet[[1]])
        binwidthX <- realRange/input$binNum
      
      # Errors out...can't continue
      
      })
      
      
      })
      

      再次感谢您对此的任何帮助...我不明白为什么我无法对Shiny中的输入变量执行简单计算....

2 个答案:

答案 0 :(得分:4)

input$histVar可让您获得selectInput名为&#34; histVar&#34;中存储的值。您已使用choices=names(mtcars)填充了该选项,因此您唯一能够获得的是mtcars列作为字符向量的名称之一。这只是告诉你选择了什么值。

input与您的数据集之间没有任何关联。输入只来自您的UI。如果您想使用该变量从mtcars获取信息,则使用与在R中使用具有列名称的字符串相同的方式。

vals <- mtcars[, input$histVar]
range(vals)
max(vals)

等...

答案 1 :(得分:2)

我想从简单开始,所以这里将您的代码修改为单个脚本。首先看看你能否实现这一目标。适用于我的系统。我从未见过有人在ui.R代码中加载数据。如果你需要动态下拉,那么你需要利用uiOutput,在server.R中加载数据,然后在ui中渲染它。无论如何,首先尝试运行此代码。

library(shiny)
runApp(list(
  ui = pageWithSidebar(  
    headerPanel("MtCars Interactive Analysis Tool"),
    sidebarPanel(
      selectInput(inputId = "histVar",
                  label= "Pick Your Variable",
                  choices=names(mtcars),
                  selected = NULL)),

    sliderInput(inputId = "binNum",
                label = h5("Number of bins for Histogram--1 through 50 are allowed"),
                min = 1,
                max = 50,
                value = 15, 
                step = 1)),
  server = function(input, output) {
    output$histPlot <- renderPlot({

    varRangeGet <- range(input$histVar)
    #print(varRangeGet)
    #print(class(varRangeGet))
    #print(max(input$histVar))
    realRange<-(varRangeGet[[2]]- varRangeGet[[1]])
    binwidthX <- realRange/input$binNum

    # Errors out...can't continue

  })
  }
),port = 3300)