闪亮的应用程序在Shinyapps.io上失败,找不到数据

时间:2020-03-21 19:25:47

标签: r shiny rstudio shinyapps

我有一个,可以在本地上正常运行,但不能在shinyapps.io上运行。在这一点上,我咨询了Rstudio guidance,似乎没有一个明显的问题出现(例如,绝对路径)。问题似乎在于该应用程序找不到数据。我已经检查并重新检查,并使用代码将数据上传到shinyapps.io。日志文件中的错误是:

警告:is.data.frame中出现错误:找不到对象“ dat”。

这是server.R文件:

library(ggplot2)

layerFit <- function(fit){
  geom_line(data = fit,
            aes(x, y), color="red",size = 1, linetype = 2)
}

dat <- read.csv("data.csv", stringsAsFactors = F, na.strings = "NA")

dat$date <- as.Date(paste0(dat$month, "-", dat$day), format = "%m-%d")
dat$time <- 1:nrow(dat)

server = function(input, output) {

  expfit <- reactive({
   dat2 <- dat[!is.na(dat[[input$variable]]),]
    mod <- lm(as.formula(paste("log(",input$variable, ") ~ time")), dat2)
    expfit <- data.frame(x = dat2$date,
                         y = exp(fitted(mod)))

    return(expfit)
  })


  output$data <- renderPlot({
    fit <- expfit()
    p <- ggplot(dat, aes(y = !!input$variable, x= date))+
      geom_point() +geom_line()+
    if(input$toggleExpFit) p = p + layerFit(fit)
    p
  })
}

这是ui.R文件:

ui <- fluidPage(
  varSelectInput("variable", "Variable:", dat[,c("x","y")]),
  checkboxInput("toggleExpFit", label = "Exponential model", value = FALSE), 
  plotOutput("data")
)

您可以通过以下方式创建虚假数据,例如data.csv文件:

dat <- data.frame(day  1:20, month = 1, x = rnorm(20), y = rnorm(20))

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如A. Suliman所建议的那样,解决方案是将服务器功能之前的所有内容放入单独的global.R脚本中。

答案 1 :(得分:1)

如前所述,您可以使用global.R脚本。

或者,如果您从varSelectInput()中删除选择,例如,可以在很大程度上保留代码。 varSelectInput("variable", "Variable:", "")。 然后,可以在server.R文件中添加一个updateVarSelectInput()语句。这样,您甚至可以在dat变量上添加交互式过滤器,并且选择将相应更改。在这种情况下,您不一定需要global.R文件。

有关示例,请参见?updateSelectInput

相关问题