我正在努力使用我的第一个闪亮的应用程序并遇到问题让它工作,因为我认为,我错过了服务器功能中的某些内容。
我有一个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。我知道我必须调用反应函数,数据,但我不确定它是否做得好。 我认为我的服务器功能是一场灾难。我在闪亮的画廊和谷歌中寻找过例子,但我没有看到类似的东西来帮助我。
为了修复我的服务器功能,有人可以提示吗?
非常感谢提前。
答案 0 :(得分:0)
根据我们同事的建议,我可以通过在反应函数内的return()中设置我创建的第一个数据框DF来解决我的问题。另一个困惑是如何从渲染图中的反应函数设置对象。