【发布时间】:2020-10-29 20:14:55
【问题描述】:
下面的代码在离线会话中以我想要的方式工作。
opcije <- ls()[sapply(ls(), function(x) class(get(x))) == 'data.frame']
ui <- fluidPage(
selectInput("language", "Zadatak 3 - No-", choices = opcije),
textOutput("tekstZadatka"),
tableOutput("tabela")
)
server <- function(input, output, session) {
output$tekstZadatka <- renderText({'some text whatever'})
output$tabela <- renderTable({
dataset <<- get(input$language)
dataset
})
}
shinyApp(ui, server)
变量 opcije 是全局定义的字符向量,用于从 glob 环境中获取 n 个数据帧之一。但是,将此代码部署到服务器后,我发现找不到对象“opcije”:
【问题讨论】:
-
全局变量需要在app.R文件中定义
-
我明白了。添加了
opcije <- ls()[sapply(ls(), function(x) class(get(x))) == 'data.frame']现在我的工作目录不存在,即使正确给出An error has occurred The application failed to start (exited with code 1). Fehler in value[[3L]](cond) : E:\1. RAST I PRIRAST\0. Nastava\Prezentacije\Vezbe_prezentacije\Test does not exist Ruft auf: local ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous> Ausführung angehalten -
进一步调试使我与 get 内部的评估保持一致。日志说我在获取时出错:第一个参数无效。
-
您尝试引用的 data.frame 必须在 App.R 中加载。您的环境未在 shinyapps.io 中发布,仅发布 app.R 和在 app.R 中加载且位于 app.R 文件夹(或子文件夹)中的文件
-
这里他们在app.r的顶部,他们只是comout。如果我转动它们,同样会发生。 # for (n in 1:5){ #assign(paste("zadatak-", n, sep =''), read.csv(paste("E:/1. RAST I PRIRAST/0. Nastava/Prezentacije/ Vezbe_prezentacije/Test", paste("zadatak-", n, ".csv", sep =''), sep ='/'))) # } 它必须是带有 opcije 变量的 sometnih,似乎 typeof 命名列表有作为参数给出 ls()[sapply(ls(), function(x) class(get(x))) == 'data.frame'] 不返回列表,但 char vec