Блестящие сочетания входов - PullRequest
1 голос
/ 30 мая 2019

У меня есть набор данных с тремя кругами (15 с / круг), каждый из которых показывает разную скорость для каждой секунды:

AA <- as.data.frame(cbind(c(10,12,11,12,12,11,12,13,11,9,9,12,11,10,12,9,8,7,9,8,7,9,9,8,9,7,9,10,10,10,7,6,7,8,8,7,6,6,7,8,7,6,7,8,8),
           c(rep("Lap_1",15),rep("Lap_2",15),rep("Lap_3",15))))

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

install.packages("shiny")
install.packages("ggplot2")
library(shiny)
library(ggplot2)

colnames(AA) <- c("Speed","Lap")
AA$Speed <- as.numeric(as.character(AA$Speed))

ui=shinyUI(
  fluidPage(
    titlePanel("Title here"),
    sidebarLayout(
      sidebarPanel(
        checkboxGroupInput("lap_choose", 
                           label = "Choose the laps",
                           choices = c("Lap_1","Lap_2","Lap_3")),
        sliderInput("secs_1",
                    "Seconds in L1:",
                    min = 0,
                    max = 15,
                    value = c(3,10),
                    step=1)),
      mainPanel(
        plotOutput("Comparison"))
    )
  )
)

server=function(input,output){
  #data manipulation
  data_1=reactive({
    return(AA[AA$Lap%in%input$lap_choose,])
  })


  output$Comparison <- renderPlot({
    ggplot(data=data_1(), aes(Speed, fill = Lap)) + 
      stat_density(aes(y = ..density..), 
                   position = "identity", 
                   color = "black", 
                   alpha = 0.8) +
      xlab("Distribution") +
      ylab("Density") +
      ggtitle("Comparison") +
      theme(plot.title = element_text(hjust = 0.5,size=24, face="bold"))
  })
}


shinyApp(ui,server)

В какой-то момент я должен использовать secs_1 для обновления data_1, но пока не выяснил, как это сделать. Есть идеи?

1 Ответ

0 голосов
/ 09 июня 2019

Если я правильно понимаю, вы хотите отфильтровать некоторые значения (основанные на sec_1 sliderInput), если переменная «lap» равна «lap_1».

Попробуйте использовать оператор ifelse в функции data_1.

data_1=reactive({
xc <- AA[AA$Lap%in%input$lap_choose,]
gh <- ifelse(xc$Lap == "Lap_1" & xc$Speed %in% c(input$secs_1[1],input$secs_1[2]), 
 FALSE, TRUE)
return(xc[gh,])
 })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...