首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有在Shinyapps.io中运行的闪亮应用程序(错误:找不到对象UI )

没有在Shinyapps.io中运行的闪亮应用程序(错误:找不到对象UI )
EN

Stack Overflow用户
提问于 2020-03-20 06:24:05
回答 1查看 3.2K关注 0票数 2

我已经成功地在本地运行了以下闪亮的应用程序。不幸的是,当我在shinyapps.io中运行它时,我从我的日志中得到以下错误消息: error (Ui):object 'ui‘没有找到。即使在进行了广泛的跟踪之后,我也找不到任何其他可以指出为什么找不到ui的东西,而且它也可以在本地运行。

以下是完整的日志:

代码语言:javascript
复制
tidyverse_conflicts() ── ✖ dplyr::filter() masks stats::filter() ✖ dplyr::lag() masks stats::lag() 

Warning: replacing previous import ‘mgcv::multinom’ by ‘nnet::multinom’ when loading ‘cfbscrapR’ 

The following objects are masked from ‘package:shiny’: dataTableOutput, renderDataTable 

The following object is masked from ‘package:shiny’: serverInfo Attaching package: ‘rsconnect’ 

64: shinyApp Warning: Error in force: object 'ui' not found –

这是我的ui.R代码:

代码语言:javascript
复制
library(tidyverse)
library(cfbscrapR)
library(gt)
library(dplyr)
library(ggplot2)
library(DT)
library(shiny)
library(shinythemes)
library(rsconnect)
library(logger)

###Now create the ui function

ui <- fluidPage(
  titlePanel(h1("College Football Analytics")),
  sidebarPanel(
    checkboxGroupInput("selections", label = h2(
      "Choose Weeks to Analyze"),
      choices = list("Week 1" = 1, "Week 2" = 2,
                     "Week 3" = 3, "Week 4" = 4,
                     "Week 5" = 5, "Week 6" = 6,
                     "Week 7" = 7, "Week 8" = 8,
                     "Week 9" = 9, "Week 10" = 10,
                     "Week 11" = 11, "Week 12" = 12,
                     "Week 13" = 13, "Week 14" = 14,
                     "Week 15" = 15),
      selected = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",
                   "12", "13", "14", "15")),
    actionButton("submit", "Update")
  ),
  mainPanel(
    h2("2019 Season"),
    DT::dataTableOutput("table"),
    theme = shinytheme("cerulean")
  )
)

至于服务器。R:

代码语言:javascript
复制
library(tidyverse)
library(cfbscrapR)
library(gt)
library(dplyr)
library(ggplot2)
library(DT)
library(shiny)
library(shinythemes)
library(rsconnect)
library(logger)

pbp_2019 <- read.csv("pbp_2019.csv")
drives_2019 <- read.csv("drives_2019.csv")


#Define server logic
server <- function(input, output, session) {
  cfb.table2 <- reactive({
    input$submit
    isolate({
      req(input$selections)
      new.pbp_2019 <- subset(pbp_2019, week %in% input$selections)})
  })
  plays <- reactive({cfb.table2() %>% filter(rush == 1 | pass == 1)})
  offense <- reactive({plays() %>% group_by(offense_play) %>% summarise(ypa = mean(yards_gained[pass==1]), ypr = mean(yards_gained[rush==1]), num.plays = n()) %>% filter(num.plays > 300)})
  offense <- reactive({plays() %>% group_by(offense_play) %>% summarise(epa.pass.off = mean(EPA[pass==1]), success.rate = mean(success), epa.rush.off = mean(EPA[rush==1]), num.plays = n()) %>% filter(num.plays > 300)})
  defense <- reactive({plays() %>% group_by(defense_play) %>% summarise(epa.pass.def = mean(EPA[pass==1]), epa.rush.def = mean(EPA[rush==1]), num.plays = n()) %>% filter(num.plays > 300)})
  update.epa <- reactive({left_join(offense(), defense(), by = c("offense_play" = "defense_play"))})
  drives.table2 <- reactive({
    input$submit
    isolate({
      req(input$selections)
      new.drives_2019 <- subset(drives_2019, week %in% input$selections)})
  })
  games <- cfb_game_info(2019) %>% rename("game_id" = id)
  drives.off <- reactive({drives.table2() %>% left_join(games, by = c("game_id")) %>%
      mutate(
        adj_start_yardline = ifelse(offense == away_team, 100-start_yardline, start_yardline), 
        success = ifelse(drive_result %in% c("TD", "FG"), 1, 0),
        drive.pts = ifelse(drive_result == "TD", 6, ifelse(drive_result == "FG", 3, 0))) %>%
      group_by(offense) %>% 
      summarise(
        fp = mean(adj_start_yardline[adj_start_yardline > 10 & adj_start_yardline <40]), 
        srate = mean(success),
        drives = n(),
        drives.pts = sum(drive.pts))
  })
  drive.update.epa <- reactive({left_join(update.epa(), drives.off(), by=c("offense_play"="offense")) %>%
      mutate(pts.per.drive = drives.pts / drives)})
  cfb.table3 <- reactive({data.frame(drive.update.epa() %>% 
                                       select(offense_play, success.rate, epa.pass.off, epa.rush.off, epa.pass.def, epa.rush.def, fp, drives, pts.per.drive) %>% gt() %>%
                                       tab_header(title = "2019 Season"))})
  output$table = DT::renderDataTable({
    datatable(cfb.table3(),
              rownames = FALSE, 
              class = 'cell-border stripe',
              colnames = c('Team', 'Success Rate',
                           'Pass EPA', 'Run EPA',
                           'Pass EPA Def.',
                           'Run EPA Def.',
                           'Avg. Field Position',
                           'Drives',
                           'Points Per Drive'),
              list(pageLength = 25)) %>%
      formatPercentage(c('success.rate'),1) %>%
      formatRound(c('epa.pass.off'),3) %>%
      formatRound(c('epa.rush.off'),3) %>%
      formatRound(c('epa.pass.def'),3) %>%
      formatRound(c('epa.rush.def'),3) %>%
      formatRound(c('fp'),1) %>%
      formatRound(c('pts.per.drive'),3)
  })
}

#Run the application
shinyApp(ui = ui, server = server)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-20 07:09:43

https://shiny.rstudio.com/articles/two-file.html引用了一个两文件闪亮的应用程序。在0.10.2版本之前,这是一个要求。从该页面(以及https://shiny.rstudio.com/articles/app-formats.html):

对于这样定义的应用程序,

文件必须返回server函数,而ui.R文件必须返回UI对象(在本例中,UI对象是由fluidPage()__创建的)。换句话说,如果文件包含其他代码(如实用程序函数),则必须确保文件中的最后一个表达式是服务器函数或UI对象。

具体来说,“包含其他代码”包括以server.R结尾的shinyApp(ui = ui, server = server),后者不“返回”服务器对象。

所以这里有三件事是错的:

  • server.R文件应该以server对象结尾,要么它的定义是该文件中的最后一个,要么您必须添加server作为该文件中的最后一行代码。
  • ,因为您使用的是两个文件系统,所以不需要使用shinyApp(ui, server)。但是,
  • ,由于您这样做了,ui对象在server.R中没有定义或可用。(事实上,我不知道您是否可以安全地假定文件的顺序是sourced,所以一次攻击可能是source("ui.R") in server.R,但我不认为这是您需要的。

可能的解决办法:

  1. 将这两个文件合并成一个文件,可能是上面第二个链接中引用的app.R设置。这样,保持shinyApp(ui, server)调用。
  2. 保持文件原样,并删除对shinyApp(ui, server)的调用。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60769479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档