Блестящая справка: публикация и «Запустить приложение» будут «серыми», но при этом сработает глянцевое приложение () - PullRequest
0 голосов
/ 01 июня 2019

Я работаю над своим первым приложением Shiny, и оно отлично смотрится, когда я запускаю его локально, но не работает, если используется кнопка «Запустить приложение» Rstudio или при публикации через shinyapp.io.

Я гарантировал, что каталог не является локальным при публикации через shinyapp.io и что файл csv находится в папке приложений. Я проверил производительность приложения с помощью profvis и приложение использует 352,9 МБ памяти и 1060 мс.

Вот документ пользовательского интерфейса:

library(shiny)
library(ggplot2)
library(readr)
library(tidyr)
library(data.table)
library(reshape2)
library(dplyr)
library(DT)
library(shinyWidgets)
library(ggrepel)
library(rsconnect)
library(devtools)


#master document. replaced with github data for sharing
df1 <- read_csv("https://raw.githubusercontent.com/KeithTStory/EnvironmentalAnalytics/master/Shiny/CABIN_explorer/20190522(2)_cabin_habitat_data_mda05_1987-present.csv",
                col_types = cols_only(Site = "c", Day = "i", Year = "i", Status = "c", Type = "c", Variable = "c", Unit = "c", Value  = "n"),
                locale = locale(encoding = "latin1")
                )

attach(df1) #odd that I am having to attach names. Seems to work with names attached though.

#Melt data to give each variable a column for selecting
df2 <- df1 %>%
  mutate(id = row_number()) %>%
  replace(., is.na(.), 0) %>%
  filter(Site != 0, Value > 0) %>%
  spread(key = Variable, value = Value) %>%
  group_by(Year) 

attach(df2)

#remove symbols that are causing issues. Tried to convert encoding but had no success.

colnames(df2) <- gsub(x = colnames(df2), pattern = "[+%-]", replacement = "")
colnames(df2) <- gsub(x = colnames(df2), pattern = " ", replacement = ".")  

df1$Variable <-gsub(x = df1$Variable, pattern = "[+%-]", replacement = "")
df1$Variable <-gsub(x = df1$Variable, pattern = " ", replacement = ".")

#This function is used to in the ui input choices for the y axis
FilterFunc <- function(condition, df) {
  subset.data <- df %>%
    filter(Type == condition)

  data_list <- unique(subset.data$Variable)
  return(as.character(data_list))
}

#useful variables for ui choices

types <- unique(as.factor(df1$Type))
df_sites <- unique(df2$Site)

### ui code_____________________________________________
ui <- fluidPage(

  titlePanel("CABIN Data Explorer (Nelson River)"),

  sidebarPanel(

    selectInput(inputId = "site",
                label = "Select Sampling Site:",
                choices = df_sites,
                selectize = TRUE,
                multiple = TRUE,
                selected = "521"
                ),

    selectInput(inputId = "y",
                label = "Y-axis:",
                choices = list(
                  "Physical Data"      = FilterFunc(types[1], df1), #pulling from df1 since it is pre-spread and simpler to work with
                  "Sediment Chemistry" = FilterFunc(types[2], df1),
                  "Water Chemistry"    = FilterFunc(types[3], df1),   
                  "Channel"            = FilterFunc(types[4], df1), 
                  "Climate"            = FilterFunc(types[5], df1), 
                  "Substrate Data"     = FilterFunc(types[6], df1), 
                  "Hydrology"          = FilterFunc(types[7], df1), 
                  "Topography"         = FilterFunc(types[8], df1), 
                  "Landcover"          = FilterFunc(types[9], df1), 
                  "Bedrock Geology "   = FilterFunc(types[10], df1)
                ),
                selectize = TRUE,
                selected = "Ca"
    )
  ),

  mainPanel(
    plotOutput('histplot'),
    DT::dataTableOutput(outputId = "site_table")
  )
)

И документ сервера:

# 
server <- function(input, output) {

  DF <- reactive({

    df2 %>%
      select(Site, Day, Year, Unit, Value = input$y) %>%
      filter(Site %in% input$site) %>%
      na.omit()

  })

  output$histplot <- renderPlot({
    req(input$site)
    req(input$y)


    p <- ggplot(data = DF(), aes(y = Value, x = Year, label = Site, color = Site)) + 
      geom_point(stat = "identity",
                 size = 3) +
      geom_label_repel(fill = "white",
                       size = 6) +
      scale_x_continuous(limits = c(2005, 2018)) +
      # scale_y_continuous(limits = c(0, max(Var))) +
      theme_bw() +
      theme(panel.grid.major = element_blank(),
            panel.grid.minor = element_blank(),
            legend.position = "none",
            panel.background = element_rect(fill = "floralwhite")

      ) +
      facet_wrap(~.Unit) +
      labs(ylab(input$y))

    print(p)

  }, height=300)

  output$site_table <- DT::renderDataTable({
    req(input$site)
    req(input$y)


    DT::datatable(data = DF(),
                  options = list(pageLength = 10),
                  rownames = FALSE)
  })

}

shinyApp(ui, server)

Когда я запускаю блестяще (пользовательский интерфейс, сервер) локально, все выглядит отлично.

Когда я использую кнопку «Запустить приложение» в RStudio, я получаю следующее сообщение:

Warning: Error in serverFuncSource: server.R returned an object of unexpected type: list
  [No stack trace available]
Error in serverFuncSource() : 
  server.R returned an object of unexpected type: list

Когда я публикую приложение с помощью кнопки публикации в RStudio, веб-документ начинает загружаться, но затем «отключается» и говорит «Отключен от сервера» с возможностью перезагрузки.

Проверка вывода консоли дает ссылку на ошибки js, которые я понятия не имею, как интерпретировать (может быть, вы можете воспроизвести и направить меня?).

Спасибо за ваше время и любые предложения! (Информация о том, как интерпретировать эти ошибки, приветствуется).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...