我正在尝试制作我的第一个闪亮的应用程序,其中接收了许多值,执行了许多计算(这取决于输入中的值和服务器函数中的值),然后绘制输出。但是,我可以在输出中根本不绘图(如下面的示例所示),或者只能显示 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)
非常感谢!
您的 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))
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句