首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用光泽计算和

用光泽计算和
EN

Stack Overflow用户
提问于 2022-10-24 18:39:35
回答 1查看 38关注 0票数 0

我试图创建一个闪亮的应用程序作为实践计划,用户可以选择他们要做的演习和他们将做多长时间的每次演习,然后应用程序向他们展示了整个练习的总表。现在,我试图根据所选的演练和每一次演练所选择的分钟数来计算会话期间所涵盖的米的总价值。然而,我的总数总是等于0,即使它可以单独计算每一次演练。有人能帮我找出我做错了什么吗?下面是我的示例数据代码。

代码语言:javascript
复制
library(shiny)
library(dplyr)

# MyData <- read.csv("/Users/sonamoravcikova/Desktop/ShinyTest/ForShiny1.csv")
MyData <- structure(list(Drill = c("GP Warm Up", "5v2 Rondo", "11v11",  "10v6 Drop
Behind Ball"), PlayerLoadPerMinute = c(7.72949670665213,  6.49382926701571,
9.67483408668731, 5.86770863636364), MetersPerMinute = c(69.9524820610687,
45.823744973822, 95.9405092879257, 58.185375), class = "data.frame", row.names
= c(NA,  -4L)))

# Define UI ----
ui <- fluidPage(
  titlePanel("Practice Planner"),
  
  sidebarLayout(
    sidebarPanel(
      #Select number of drills
      numericInput("num", h3("Number of Drills"), value = 1),
      textOutput("MpM_Total")
      
    ),
    
    mainPanel(
      #Show boxes for the number of drill selected and select drill type
      selectInput("DrillName1",
                  label = "Choose a Drill:",
                  choices = unique(MyData$Drill),
                  selected = NULL,
                  multiple = FALSE),
      
      sliderInput("slider1", 
                  label = h3("Slider"), 
                  min = 0, 
                  max = 60, 
                  value = 0),
      textOutput("MpM1"),
      br(),
      conditionalPanel(
        condition = "input.num > '1'",
        selectInput("DrillName2",
                    label = "Choose a Drill:",
                    choices = unique(MyData$Drill),
                    selected = NULL,
                    multiple = FALSE),
        
        
        sliderInput("slider2", 
                    label = h3("Slider"), 
                    min = 0, 
                    max = 60, 
                    value = 0),
        textOutput("MpM2")),
      br(),
      conditionalPanel(
        condition = "input.num > '2'",
        selectInput("DrillName3",
                    label = "Choose a Drill:",
                    choices = unique(MyData$Drill),
                    selected = NULL,
                    multiple = FALSE),
        
        
        sliderInput("slider3", 
                    label = h3("Slider"), 
                    min = 0, 
                    max = 60, 
                    value = 0),
        textOutput("MpM3"))
    )
  )
)

# Define server logic  ----
server <- function(input, output, session) {
  
  #Calculate number of meters covered
 
  lapply(1:10, function(x) {
    MetersPerMin <- reactive({
      chosendrill <- input[[paste0("DrillName",x)]]
     MpM <- MyData %>%
        distinct(MetersPerMinute, .keep_all = T)
     MpM_text <- (MpM$MetersPerMinute[MpM$Drill == chosendrill]) * (input[[paste0("slider",x)]])
     
    })
     output[[paste0("MpM", x)]] <- renderText({
        paste0("Meters covered: ", MetersPerMin())
     })
     
     MpM_Sum <- reactive({
       sum(MetersPerMin())
     })
       
    output$MpM_Total <- renderText({
      paste("Total Meters Covered", MpM_Sum())
    })
  })
}

# Create Shiny app ----
shinyApp(ui = ui, server = server)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-24 21:27:39

代码语言:javascript
复制
library(shiny)
library(dplyr)

MyData <- data.frame(Drill = c('GP Warm Up', '5v2 Rondo', '11v11',  '10v6 Drop Behind Ball'), 
                     PlayerLoadPerMinute = c(7.72949670665213, 6.49382926701571, 9.67483408668731, 5.86770863636364), 
                     MetersPerMinute = c(69.9524820610687, 45.823744973822, 95.9405092879257, 58.185375))
MpM <- MyData %>%
  distinct(MetersPerMinute, .keep_all = T)

# Define UI ----
ui <- fluidPage(
  
  titlePanel('Practice Planner'),
  
  sidebarLayout(
    
    sidebarPanel(
      #Select number of drills
      numericInput('num', h3('Number of Drills'), value = 1),
      textOutput('MpM_Total')
    ),
    
    mainPanel(
      
      #Show boxes for the number of drill selected and select drill type
      selectInput('DrillName1',
                  label = 'Choose a Drill:',
                  choices = unique(MyData$Drill),
                  selected = NULL,
                  multiple = FALSE),
      sliderInput('slider1', 
                  label = h3('Slider'), 
                  min = 0, 
                  max = 60, 
                  value = 0),
      textOutput('MpM1'),
      
      br(),
      
      conditionalPanel(
        condition = 'input.num > "1"',
        selectInput('DrillName2',
                    label = 'Choose a Drill:',
                    choices = unique(MyData$Drill),
                    selected = NULL,
                    multiple = FALSE),
        sliderInput('slider2', 
                    label = h3('Slider'), 
                    min = 0, 
                    max = 60, 
                    value = 0),
        textOutput('MpM2')
      ),
      
      br(),
      
      conditionalPanel(
        condition = 'input.num > "2"',
        selectInput('DrillName3',
                    label = 'Choose a Drill:',
                    choices = unique(MyData$Drill),
                    selected = NULL,
                    multiple = FALSE),
        sliderInput('slider3', 
                    label = h3('Slider'), 
                    min = 0, 
                    max = 60, 
                    value = 0),
        textOutput('MpM3')
      )
    )
  )
)

# Define server logic  ----
server <- function(input, output, session) {
  
  MetersPerMin <- reactive({
    idx <- input$num
    if (idx < 1) { 
      idx <- 1
    } else if (idx > 3) {
      idx <- 3
    }
    mpms <- sapply(1:idx, function(x) {
      chosendrill <- input[[ paste0('DrillName', x) ]]  
      mpm <- (MpM$MetersPerMinute[ MpM$Drill == chosendrill ]) * (input[[ paste0('slider', x) ]])
      output[[ paste0('MpM', x) ]] <- renderText(paste0('Meters covered: ', mpm))
      mpm
    })
    mpms
  })
  
  output$MpM_Total <- renderText({
    paste('Total Meters Covered', sum(MetersPerMin()))
  })
}

# Create Shiny app ----
shinyApp(ui = ui, server = server)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74185397

复制
相关文章

相似问题

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