Возможно, кто-то с большим количеством программирования, особенно с блестящим программированием, может дать вам лучший ответ. По моему мнению, ваш вопрос может использовать некоторые пояснения, мне немного непонятно, какие именно результаты вы хотите / какова ваша рациональность за этим кодом. Несмотря на это, я постараюсь дать ответ. Возможно, некоторые из вещей, которые я упоминаю, являются «личными», так как я бы не стал программировать блеск таким образом.
Лично я бы не использовал функцию в Shiny, скорее используйте оператор reactive({})
. Я не знаю, почему вы бы предпочли эту функцию, а не реактивную, тем более что у вас много слайдеров, которые вы нигде не используете. Так какой смысл иметь все эти выражения в вашей функции? Кроме того, я не очень понимаю, почему вы хотите, чтобы каждый шаг был записан в отдельный вектор. В частности, я имею в виду часть
predictedStrikerValue = strikerProjectedValue(input$age, 150)
output$strikerValue = renderPrint(predictedStrikerValue)
Возможно, у вас есть планы использовать их позже, но опять же, что не ясно из вашего описания. Почему бы не поставить renderPrint(strikerProjectedValue(input$age, 150))
? (именно поэтому я и сказал в начале, что ваш вопрос может нуждаться в дополнительном объяснении;), потому что для этого может быть разумное объяснение).
Чтобы заставить ваш код работать, я заменил все в вашем коде сервера на
output$strikerValue = renderText((-250.19*input$age) +
(1987.33*input$dribbling_skills) +
(4439.32*input$tackling_skills) +
(3232.44*input$shooting_skills))
Чтобы получить то же самое, что и в вашей функции, вы должны будете сначала поставить ползунки на 0.
Другой способ сделать это, который больше похож на вашу начальную функцию:
predictedStrikerValue<- reactive({(-250.19*input$age) + (1987.33*input$dribbling_skills)
})
output$strikerValue = renderText(predictedStrikerValue())
Подобно приведенному выше коду, вы можете добавить все остальные части функции, чтобы получить его полностью реактивный.