Проблемы синтаксиса R - часть 2 redux - PullRequest
0 голосов
/ 18 июня 2020

Все, что у меня есть, это файл csv, в котором есть строки с датами за месяц и столбцы, которые представляют собой числовые целые числа.

Все, что я хочу сделать, это попросить пользователя выбрать категорию, например количество чатов, и получить ее сделайте график временного ряда.

uiOutput просто не будет работать независимо от того, где я его поместил. Я продолжаю получать такие ошибки, как:

сервер объектов не найден, пользовательский интерфейс объекта не найден Ошибка в выводе $ regionSel = renderUI (selectInput ("region", "Type of Questions:",: object 'output' not найдено

Я потратил на это четыре дня и собираюсь сдаться, так как это кажется не решаемой проблемой, хотя я вижу множество примеров гораздо более сложных взаимодействий. Я читал учебные пособия и смотрел YouTube видео об этом бесконечно без положительного эффекта.

Это потому, что я использую даты, а у R проблемы с датами?

UI
# Rely on the 'WorldPhones' dataset in the datasets
# package (which generally comes preloaded).
library(datasets)
library(ggplot2)
library(readr)

oboler_data <- read_csv(file = "C:/Users/12083/Desktop/ref.csv")
rdate <- as.Date(oboler_data$DATE,"%m/%d/%y")
# Use a fluid Bootstrap layout
fluidPage(    

    # Give the page a title
    titlePanel("Teephones by region"),

    # Generate a row with a sidebar
    sidebarLayout(      




        # Define the sidebar with one input
        sidebarPanel(

            uiOutput("regionSel")



            #selectInput("region", "Region:", 
            # choices=colnames(oboler_data)),


            # ),

            # Create a spot for the barplot
            mainPanel(
                plotOutput("myPlot")  
            )

            #)
            #)

            server
# Rely on the 'WorldPhones' dataset in the datasets
# package (which generally comes preloaded).
library(datasets)
library(ggplot2)
oboler_data <- read_csv(file = "C:/Users/12083/Desktop/ref.csv")
rdate <- as.Date(oboler_data$DATE,"%m/%d/%y")
# Define a server for the Shiny app
function(input, output) {

    output$regionSel = renderUI(selectInput("region", "Type of Questions:",
                                            choices=colnames(oboler_data)))
    # Fill in the spot we created for a plot
    output$myPlot = renderPlot({


        # Render a barplot
        ggplot(data = oboler_data, aes_string(x = "rdate", y = input$regionSel)) +
            geom_point() +
            labs(x = "Date",
                 y = "Total Transactions",
                 title = "Library Data",
                 subtitle = "July 2020-June 2021") 
    })

1 Ответ

1 голос
/ 19 июня 2020

Вы пропустили назначение функций ui и server объектам ui и server. Поэтому напишите ui <- FluidPage() и server <- function(input, output) вместо FluidPage() и function(input, output). Это объясняет первые два кода ошибки. Наконец, в aes_string(x = "rdate", y = input$regionSel) я думаю, вам нужно обратиться к input$region: это id виджета selectInput. regionSel - это идентификатор, связанный с uiOutput. При использовании Dynami c ui вам нужно держать эти идентификаторы отдельно.

Как только вы исправите это, все будет работать. Вот простое блестящее приложение, которое сделает то, что вам нужно.

library(shiny)
library(dplyr)
library(tibble)
library(ggplot2)

data <- tibble(
  DATE = seq.Date(from = as.Date("2020/01/01"), to = as.Date("2020/06/19"), by = "day"),
  VAR1 = seq(1, 171, 1) + round(runif(n = 171, min = 0, max = 100), 0),
  VAR2 = seq(1, 171, 1) + round(runif(n = 171, min = 0, max = 100), 0),
  VAR3 = seq(1, 171, 1) + round(runif(n = 171, min = 0, max = 100), 0),
  VAR4 = seq(1, 171, 1) + round(runif(n = 171, min = 0, max = 100), 0),
  VAR5 = seq(1, 171, 1) + round(runif(n = 171, min = 0, max = 100), 0)
)

# Define UI for application that draws a histogram
ui <- fluidPage(

  # Application title
  titlePanel("Library Statistics"),

  # Sidebar with a slider input for number of bins 
  sidebarLayout(
    sidebarPanel(
      uiOutput("select")
      ),
    # Show a plot of the generated distribution
    mainPanel(
      plotOutput("distPlot")
    )
  )
)

# Define server logic required to draw a histogram
server <- function(input, output) {

  output$select <- renderUI(
    selectInput(inputId = "select_question",
                label = "Type of question",
                choices = data %>% select(-DATE) %>% colnames(.)
  ))

  output$distPlot <- renderPlot({
    req(input$select_question)
    var <- input$select_question
    ggplot(data = data, aes_string(x = "DATE", y = var)) +
      geom_point() +
      labs(x = "Date",
           y = "Total Transactions",
           title = "Library Data",
           subtitle = "July 2020-June 2021") 
  })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...