闪亮应用程序中的结构服务器功能

时间:2018-02-19 12:58:54

标签: r shiny shiny-server

我正在努力使用我的第一个闪亮的应用程序并遇到问题让它工作,因为我认为,我错过了服务器功能中的某些内容。

我有一个R脚本,它有两个变量(闪亮的两个反应值),它们创建一个绘图(直方图)和一个包含两列(时间和毫米)的csv文件。

library(ggplot2)
**Pdmm** <- 125                 # numeric input in shiny
**IndiceTorrencial** <- 10      # slider between 8 and 12 in shiny 
DuracionAgua <- 24
IntervaloMin <- 60
IntervaloTiempo <- IntervaloMin/60
Intervalos <- DuracionAgua/IntervaloTiempo
t <- seq(1,Intervalos,IntervaloTiempo)
DF <- data.frame(t)
DF$I <- (**Pdmm**/24)*(**IndiceTorrencial**)^(((28^0.1)-(DF$t^0.1))/((28^0.1)-1)) # equation where the reactive values are running
DF$Pacu <- DF$t*DF$I
DF$Pmm <- c(DF$Pacu[1], diff(DF$Pacu, lag = 1))
DF$mm <- c(DF$Pmm[23],DF$Pmm[21],DF$Pmm[19],DF$Pmm[17], DF$Pmm[15],DF$Pmm[13],DF$Pmm[11],DF$Pmm[9],DF$Pmm[7],DF$Pmm[5],DF$Pmm[3],DF$Pmm[1],DF$Pmm[2],DF$Pmm[4],DF$Pmm[6],DF$Pmm[8],DF$Pmm[10],DF$Pmm[12],DF$Pmm[14],DF$Pmm[16],DF$Pmm[18],DF$Pmm[20],DF$Pmm[22],DF$Pmm[24])
ggplot(DF,aes(x=t,y=mm)) + geom_bar(stat = "identity",fill = "dodgerblue",color = "black") + scale_x_continuous(name = "t(h)", breaks = seq(1,24,1)) + scale_y_continuous(name = "mm")

我的闪亮应用在其UI中有一个滑块,一个数字输入和一个情节。它有效,我将有时间做些更好的事情。

ui <- basicPage(
  sliderInput(inputId = "coefTo",
              label = h3("Torrentiality Coefficient"),
              value = 10, min = 8, max = 12),
  numericInput(inputId = "PmmS",
               label = h3("Areal Precipitation"),
               value = 100),
  imageOutput("plot")
)

问题在于服务器功能。我想我确定我必须使用反应函数来执行代码并产生结果(histogram和csv)。另外,为绘制直方图,我有一个renderPlot。

server <- function(input, output, session){

  data <- reactive({
    DuracionAgua <- 24
    IntervaloMin <- 60
    IntervaloTiempo <- IntervaloMin/60
    Intervalos <- DuracionAgua/IntervaloTiempo
    t <- seq(1,Intervalos,IntervaloTiempo)
    DF <- data.frame(t) 
    DF$I <- (input$PmmS/24)*(input$coefTo)^(((28^0.1)-(DF$t^0.1))/((28^0.1)-1))
    DF$Pacu <- DF$t*DF$I
    DF$Pmm <- c(DF$Pacu[1], diff(DF$Pacu, lag = 1))
    DF$mm <- c(DF$Pmm[23],DF$Pmm[21],DF$Pmm[19],DF$Pmm[17], DF$Pmm[15],DF$Pmm[13],DF$Pmm[11],DF$Pmm[9],DF$Pmm[7],DF$Pmm[5],DF$Pmm[3],DF$Pmm[1],DF$Pmm[2],DF$Pmm[4],DF$Pmm[6],DF$Pmm[8],DF$Pmm[10],DF$Pmm[12],DF$Pmm[14],DF$Pmm[16],DF$Pmm[18],DF$Pmm[20],DF$Pmm[22],DF$Pmm[24])
    DFm <- DF$mm

    return(DFm)

  })

  output$plot <- renderPlot({
    ggplot(data(DFm),aes(x=t,y=mm)) + geom_bar(stat = "identity",fill = "dodgerblue",color = "black") + scale_x_continuous(name = "t(h)", breaks = seq(1,24,1)) + scale_y_continuous(name = "mm")
  })

}

当我运行这个脚本时,我得到了闪亮的应用程序我有滑块和数字输入,但没有得到错误消息说Error: unused argument (DFm). DFm没有创建,所以我假设我放置不好我的原始脚本中的代码在闪亮的应用程序中,但我无法弄清楚如何做到这一点。

我已尝试了几项使服务器正常工作的东西,但我认为该脚本永远不会在闪亮的应用程序中运行。我试图创建两个反应函数,每个反应值一个。我试图将原始脚本中的所有代码从闪亮的代码中删除,只留下闪亮代码中的反应值...我也尝试使用observe函数。 我遇到的另一个问题是我不确定renderPlot。我知道我必须调用反应函数,数据,但我不确定它是否做得好。 我认为我的服务器功能是一场灾难。我在闪亮的画廊和谷歌中寻找过例子,但我没有看到类似的东西来帮助我。

为了修复我的服务器功能,有人可以提示吗?

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

根据我们同事的建议,我可以通过在反应函数内的return()中设置我创建的第一个数据框DF来解决我的问题。另一个困惑是如何从渲染图中的反应函数设置对象。