r - Shinyapps.io上的闪亮应用程序失败,找不到数据
问题描述
我有一个闪亮的应用程序,在本地rstudio中运行良好,但在shinyapps.io
. 关于这一点,我查阅了Rstudio 指南,但似乎没有任何明显的问题存在(例如绝对路径)。问题似乎是应用程序找不到数据;我已经检查并重新检查并正在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))
谢谢你的帮助。
解决方案
如前所述,您可以使用 global.R 脚本。
或者,您可以在很大程度上保持您的代码原样,如果您从 中删除选项varSelectInput()
,例如varSelectInput("variable", "Variable:", "")
. 然后,在您的 server.R 文件中,您可以添加一条updateVarSelectInput()
语句。这样,您甚至可以在dat
变量上添加交互式过滤器,并且选择会相应改变。在这种情况下,您不一定需要 global.R 文件。
看?updateSelectInput
一个很好的例子。
推荐阅读
- html - 将最后一个孩子放在前一个孩子旁边 - Flexbox
- r - 从 ks 包绘制 kde.local.test 结果时,fhat 评估点的误差单调增加
- api - 通用 Windows 平台上的 User32 Windows UI Api
- java - 将谷歌地图添加到底部导航栏的按钮
- list - 检查连续元素之间的差异是否相同
- matlab - 为什么在 MATLAB 中允许使用多个连续的加号语法?
- mysql - 运行查询统计
- c# - Dbcontext 的构造函数不断更改模型更新的基本参数
- html - 选择 HTML 中的多级选项
- java - 是否可以在哈希表 Java 中添加没有值的键?