我正在努力使用我的第一个闪亮的应用程序,并有问题,因为,我认为,我错过了服务器功能的一些问题。
我有一个R脚本,它有两个变量(shiny中的两个反应值),它创建了一个图(一个直方图)和一个包含两列(time和mm)的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")
)问题出在服务器功能上。我想我肯定我必须使用一个反应函数来执行代码并产生结果(直方图和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没有被创建,所以我假设我把来自我的原始脚本的错误代码放在了闪亮的应用程序中,但我不知道该怎么做。
我已经尝试了几种方法来使服务器正常工作,但我认为脚本永远不会在闪亮的应用程序中运行。我尝试创建两个反应函数,每个反应值一个。我试图将我的原始脚本中的所有代码都放在闪亮的代码之外,只留下闪亮的代码中的反应值……我也试着使用了观察函数。我遇到的另一个问题是,我对renderPlot不太确定。我知道我必须调用反应函数data,但我不确定它是否做得很好。我认为我的服务器功能完全是个灾难。我已经在闪亮的画廊和谷歌中寻找了一些例子,但我没有看到类似的东西对我有帮助。
有人能给我一些小贴士来修复我的服务器功能吗?
在此之前,非常感谢您。
发布于 2018-02-19 23:18:59
按照我们同事的建议,我可以通过在反应函数中设置DF (我创建的第一个数据框)来解决我的问题。另一个令人困惑的问题是如何从渲染图内部的反应函数中设置对象。
https://stackoverflow.com/questions/48866781
复制相似问题