闪亮-尝试复制“ closure”类型的对象

时间:2019-02-22 00:42:25

标签: r shiny

我正在尝试编写一个简单的Shiny应用程序,该应用程序绘制了一个指数衰减函数,用户可以在其中输入不同的lambda值。我尝试过的每个变化都会导致“ rep(value,length.out = nrows)错误:尝试复制'closure'类型的对象。”我尝试从this线程中获取建议,但是无法解决我的问题。

library(shiny)
decay <- data.frame(days= seq(100, 0)) 

ui <- fluidPage( 
  sliderInput(inputId = "lambda",
              label = "Choose a number",
              value = 0.0, min = 0.0, max = 0.2),
  plotOutput("lplot")
)

server <- function(input, output){
  decay[[2]] <- reactive({
    exp(-input$lambda*decay[[1]])
  })
  output$lplot <- renderPlot({
    plot(decay())
  })

}

shinyApp(ui = ui, server = server)

我是Shiny的新手,所以我可能忽略了一些基本的知识。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

decay[[2]] <- reactive

试图覆盖data.frame decay的第二个元素。您可能并不打算这样做。

此外,我不确定您想要

decay[[1]]

我怀疑您要使用days decay中的所有data.frame吗?

在这种情况下,您应该将结构更改为类似的内容

library(shiny)
decay <- data.frame(days= seq(100, 0)) 

ui <- fluidPage( 
  sliderInput(inputId = "lambda",
              label = "Choose a number",
              value = 0.0, min = 0.0, max = 0.2),
  plotOutput("lplot")
)

server <- function(input, output){

  r_decay <- reactive({
    exp(-input$lambda*decay$days)
  })
  output$lplot <- renderPlot({
    plot(r_decay())
  })

}

shinyApp(ui = ui, server = server)

enter image description here