#if-statement #shiny #reactive
#оператор if #блестящий #реактивный
Вопрос:
Я пытаюсь создать блестящую панель инструментов, где я должен использовать оператор if, чтобы определить, как следует обрабатывать переменную. в этом случае оператор if присваивает кратное (либо 1, либо 0), которое затем умножается на несколько переменных позже в коде. По какой-то причине я не могу заставить оператор IF работать вне функции renderUI. Я пытался сделать его реактивной функцией, но это тоже не сработало.
server <- function(input, output, session) {
LinerCost <- reactive ({ input$LLDPE_Liner/100 * DirectRM_Cost$Rs_KG[15]
input$Other_Additive_Liner/100 * DirectRM_Cost$Rs_KG[20]})
reactive({if (input$lamination == "lam_yes") {
lam_rm_multiple = 1} else {
lam_rm_multiple = 0
}})
LamCost <- reactive({ LamCost * lam_rm_multiple })
LinerCost <- reactive ({LinerCost * liner_rm_multiple})
Weight <- reactive ({
as.numeric(input$final_lam_weight) * lam_rm_multiple
})
RMcost <- reactive({
((as.numeric(input$final_unlam_weight) / CombinedWeight()) * UnLamCost())
})
}
shinyApp(ui, server)
Здесь я хочу lam_rm_multiple
, чтобы ему было присвоено значение либо 0, либо 1, а затем оно умножается на переменные и принудительно присваивает им значение 0 по мере необходимости. В настоящее время я получаю сообщение об ошибке в сообщении shiny — Предупреждение: ошибка в: объект ‘lam_rm_multiple’ не найден
Комментарии:
1. Взгляните на
?eventReactive
. Что-то вроде eventReactive({input$liner == «liner_yes»}, {… ваш код …}) должен это сделать.2. Спасибо @ismirsehregal.. В итоге я заключил все переменные в as.numeric(), и это сработало для меня.