【问题标题】:Error in value [[3L]] (cond): Object 'opcije' not found值 [[3L]] 错误(条件):找不到对象“opcije”
【发布时间】: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 &lt;- 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 -&gt; tryCatchList -&gt; tryCatchOne -&gt; &lt;Anonymous&gt; 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

标签: r shiny shinyapps


【解决方案1】:

解决了。我缺少的部分是数据必须在服务器函数中加载,而不是在 app.R 中。现在部署之后,代码就可以正常工作了。

server <- function(input, output, session) {
    
output$tekstZadatka <- renderText({'some text whatever'})

    for (n in 1:5){
        assign(paste("zadatak_", n, sep =''), read.csv(paste("Zadaci", paste("zadatak_", 
               n, ".csv", sep =''), sep ='/')))
    }
    
    output$tabela <- renderTable({
        dataset <- get(input$language)
        dataset
    })  
}

【讨论】:

    猜你喜欢
    • 2015-06-02
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 2017-09-28
    • 2018-06-06
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多