从SQL数据创建直方图时出现奇怪的错误

时间:2016-10-25 19:56:26

标签: r shiny

不完全确定此错误来自何处。这是错误:

Error in match.arg(tolower(breaks), c("sturges", "fd", "freedman-diaconis", 'arg' should be one of “sturges”, “fd”,
     

“freedman-diaconis”,“scott”

这是我的代码:

    library("RODBC")
datalithicdb <- odbcDriverConnect(connection="Driver={SQLServer};server=CGPC-TECH1\\SQLEXPRESS;database=datalithic;trusted_connection=true;")

boedata <- sqlQuery(datalithicdb, "select EUROil, WellID from vwWellNames where EUROil <>0")

med<-median(boedata$EUROil)
l=1/10*med
h=9/10*med

truncboedata <- subset(boedata, EUROil>l & EUROil<h)
hist(
  truncboedata$EUROil, 
  main= "OIL EUR Histogram", 
  freq=FALSE,
  probability = TRUE, 
  xlab="EUR",
  ylab="# of Wells", 
  col="green",border = "blue", 
  las=1, 
  breaks=Bin Size
  )
close(datalithicdb) 

这是ui.R文件

    library(shiny)

shinyUI(fluidPage(
  titlePanel("Oil EUR Data"),
  sidebarLayout(
    sidebarPanel(
      "Slider",
      sliderInput(inputId = "Bin Size",
                  label = "Number of Bins",
                  value = 100, min = 1,max = 1000)),
    mainPanel(

    )
   )
  )
 )

提前致谢!

1 个答案:

答案 0 :(得分:0)

让我们看一下?sliderInput底部的示例:

ui <- fluidPage(
  sliderInput("obs", "Number of observations:",
    min = 0, max = 1000, value = 500
  ),
  plotOutput("distPlot")
)

# Server logic
server <- function(input, output) {
  output$distPlot <- renderPlot({
    hist(rnorm(input$obs))
  })
}

我们可以看到输入是使用输入ID "obs"定义的。在服务器端,它被引用为input$obs。你需要模仿这种风格。

你有breaks = Bin Size的地方应该有类似breaks = input$Bin Size的东西,但即使这样也行不通,因为正确的变量名不能有空格。你有几个选择来解决这个问题:

  1. 将输入ID重命名为不使用空格。我只想使用inputId = "n_bins",然后使用breaks = input$n_bins
  2. 使用反引号,R划分奇怪的对象名称的方式:input$`Bin Size`
  3. 使用字符串访问input列表:breaks = input[["Bin Size"]]
  4. 作为附注,我认为你可能对结果感到失望 - 他们似乎被贴错了标签。你给hist一个关于休息次数的建议,这与箱子的数量成反比。如果用户想要非常大的垃圾箱,则应将滑块设置为非常低的数量,以便只有很少的休息时间。