闪亮的情节没有出现

时间:2019-01-25 16:55:24

标签: r shiny

我正在尝试制作我的第一个闪亮的应用程序,其中包含许多值,执行许多计算(取决于输入值和服务器函数中的值),然后输出已绘制。但是,我要么在输出中根本没有绘图(如下面的示例中所示),要么只能得到1:1线,而无法显示我的数据。我不完全确定从哪里开始进行故障排除,但是我认为在进行计算并将其输入到图函数中时遇到问题。如果您有任何指针,将不胜感激。

这是我的应用程序的简化版:

library(shiny)
require(ggplot2)

ui<-fluidPage(
  sidebarLayout(
    sidebarPanel(
      titlePanel("mytitle"),
      sliderInput(inputId= "min", label="minratio", value=0, min=0, max=0.499),
      sliderInput(inputId= "max", label="maxratio", value=1, min=0.5, max=1)
    ),
    mainPanel(
      textOutput("valoutput"),
      plotOutput("distPlot",width="100%"))
  )
)

server<-function(input, output){
  BS = function(x) {
    mini=x[1]; maxi=x[2]
    ratio <-seq(from=mini,to=maxi, by=0.01) 
    total<-30*ratio+3
    res = c(ratio,total)
  }
  data<-reactive({as.data.frame("mini"=as.numeric(input$min), "maxi"=as.numeric(input$max))})

  output$valoutput <- renderText({BS(data())[1]})
  output$distplot <- renderPlot({
    d1=BS(data())[1]
    d2=BS(data())[2]
       ggplot()+geom_abline(intercept = 0, slope=1, colour="grey50")+geom_point(aes(x=d1, y=d2))
  }, height = 350, width = 600)

}

shinyApp(ui=ui, server=server)

非常感谢!

1 个答案:

答案 0 :(得分:0)

您的BS功能不正确。对此进行更改(使用as.numeric)。否则,x [1] / x [2]将是data.frames,并将在seq()中引发错误。另外,您也可以使用双括号,例如x[[1]]

  BS = function(x) {
    mini=x[1]; maxi=x[2]
    ratio <-seq(from=as.numeric(mini),to=as.numeric(maxi), by=0.01) 
    total<-30*ratio+3
    res = c(ratio,total)
  }

,并且在ui中,绘图输出名称不正确。应该是distplot而不是distPlot

您不需要调用as.data.frame,只需data.frame就能完成正确的工作,因为您要创建data.frame而不转换对象。

  data <- reactive({
    data.frame("mini"=as.numeric(input$min), 
               "maxi"=as.numeric(input$max))
    })