Shiny R,Plot,ShinyApp

时间:2017-06-12 12:57:35

标签: r plot shiny

我想在Shiny R.写一个简单的应用程序 我想有两个输入(x和y)并绘制相对散点图。代码如下

library(shiny)

ui<-fluidPage(
headerPanel('Plot'),

sidebarPanel(
sliderInput(inputId = 'x',label='X', value = 1,min=1,max=3),


sliderInput(inputId = 'y',label='Y', value = 1,min=1,max=3)
),

mainPanel(
plotOutput('plot')
)
)

server<-function(input,output) {
x <- reactive({input$x})

y <- reactive({input$y})

output$plot <- renderPlot({plot(x,y)}) 
}


shinyApp(ui=ui, server=server)

代码产生错误,

cannot coerce type 'closure' to vector of type 'double'

我该如何纠正?

非常感谢

3 个答案:

答案 0 :(得分:2)

X和Y是函数,因此将()添加到它们

output$plot <- renderPlot({plot(x(),y())})

答案 1 :(得分:0)

您可以使用此服务器参数:

server <- function(input,output) {
  output$plot <- renderPlot(plot(input$x,input$y)) 
}

答案 2 :(得分:0)

input值已经是反应性的,因此无需将它们包装在reactive()函数中。这是一种更整洁,更有效的工作方式:

library(shiny) {

    ui<-fluidPage(
    headerPanel('Plot'),

    sidebarPanel(
        sliderInput(inputId = 'x', label= 'X', value = 1, min= 1, max= 3),
        sliderInput(inputId = 'y', label= 'Y', value = 1, min= 1, max= 3)
    ),

    mainPanel(plotOutput('plot'))

    server<-function(input, output) {
        output$plot<- renderPlot({
        plot(input$x, input$y)
    }) 

}

shinyApp(ui= ui, server= server)