#r #shiny
#r #блестящий
Вопрос:
Я новичок в R shiny и пытаюсь сделать калькулятор диеты (предполагая, что у вас есть значения изотопов для измерений 15N и 13C для образцов ногтей/волос). У меня возникли проблемы с форматированием моего оператора if для создания моего выходного оператора, который дает вам диету, основанную на входах d13C и d15N (т. Е., если значения d15Nair = 6, d13Cpdb = -24…… «ваш рацион в основном состоит из фруктов, овощей и зерноедов»).
Мне кажется, что это строго проблема форматирования, я был бы признателен за любую обратную связь.
library(shiny) library(tidyverse) ui lt;- fluidPage(numericInput(inputId = "Cnumber", label = "d13C (per mil)", value = "2",), numericInput(inputId = "Nnumber", label = "d15N (per mil)", value = "1"), textOutput(outputId = "DietCalculator") ) server lt;- function(input, output, session) { d13Cpdb lt;- reactive(input$Cnumber) d15Nair lt;- reactive(input$Nnumber) } if(d13Cpdb lt;= -23 amp; d13Cpdb gt;= -29 amp; d15Nair lt;= 7 amp; d15Nair gt;= -1) {print("Fruits, Vegetables, and Grain eaters") } else if(d13Cpdb lt;= -22 amp; d13Cpdb gt;= -29 amp; d15Nair lt;= 11 amp; d15Nair gt;= -7) {print("Non-corn-Fed Meat Consumers") } else if(d13Cpdb lt;= -17 amp; d13Cpdb gt;= -19 amp; d15Nair lt;= 6 amp; d15Nair gt;= 4) {print("Dairy Consumers") } else if(d13Cpdb lt;= -21 amp; d13Cpdb gt;= -18 amp; d15Nair lt;= 17 amp; d15Nair gt;= 12) {print("Marine Fish Consumers") } else if(d13Cpdb lt;= -12 amp; d13Cpdb gt;= -17 amp; d15Nair lt;= 11 amp; d15Nair gt;= 3) {print("Corn-Fed Meat Consumers") } else if(d13Cpdb lt;= -10 amp; d13Cpdb gt;= -13 amp; d15Nair lt;= 5 amp; d15Nair gt;= 3) {print("Corn amp; Sugar Cane Product Consumers, eat healthier") } else {(print("Diverse diets incorporating more than one source")) } output$DietCalculator lt;- renderText({input$Cnumber}) output$DietCalculator lt;- renderText({input$Nnumber}) shinyApp(ui = ui, server = server)
Комментарии:
1. В
if (d13Cpdb lt;= -23 amp; d13Cpdb gt;= -29...)
, вам нужно указатьd13Cpdb
, какd13Cpdb()
, поскольку реактивы являются функциями.
Ответ №1:
Как упоминал @YBS, как d13Cpdb
и в случае с реактивом, вам нужно изменить код, чтобы он был d13Cpdb()
. Второе, что я сделал, это передвинул концевую скобку serverlt;-function(input, output, session){ }
, чтобы охватить output$DietCalculator
. Также примечательно, что у вас есть два разных renderText()
кода, которые идут к одному и тому же output$DietCalculator
. Если вы хотите отобразить оба, то вам нужно будет сделать второй вывод с другим именем, или, возможно, если вы хотите, чтобы они оба были в одном выводе, используйте функцию вставки, что-то вроде paste0("Cnumber is ", input$Cnumber," and Nnumber is ", input$Nnumber)
. Наконец, я подумал , что вы хотели, чтобы ваше утверждение if отображалось в renderText()
, поэтому я переместил его в renderText()
и удалил все print()
функции. Таким образом, это поместило бы его в блестящее приложение. Надеюсь, это то, что вы искали. Желаю удачи в ваших будущих начинаниях!
library(shiny) library(tidyverse) ui lt;- fluidPage(numericInput(inputId = "Cnumber", label = "d13C (per mil)", value = "2",), numericInput(inputId = "Nnumber", label = "d15N (per mil)", value = "1"), textOutput(outputId = "DietCalculator") ) server lt;- function(input, output, session) { d13Cpdb lt;- reactive(input$Cnumber) d15Nair lt;- reactive(input$Nnumber) output$DietCalculator lt;- renderText({ req(input$Cnumber, input$Nnumber) if(d13Cpdb() lt;= -23 amp; d13Cpdb() gt;= -29 amp; d15Nair() lt;= 7 amp; d15Nair() gt;= -1) {"Fruits, Vegetables, and Grain eaters" } else if(d13Cpdb() lt;= -22 amp; d13Cpdb() gt;= -29 amp; d15Nair() lt;= 11 amp; d15Nair() gt;= -7) {"Non-corn-Fed Meat Consumers" } else if(d13Cpdb() lt;= -17 amp; d13Cpdb() gt;= -19 amp; d15Nair() lt;= 6 amp; d15Nair() gt;= 4) {"Dairy Consumers" } else if(d13Cpdb() lt;= -21 amp; d13Cpdb() gt;= -18 amp; d15Nair() lt;= 17 amp; d15Nair() gt;= 12) {"Marine Fish Consumers" } else if(d13Cpdb() lt;= -12 amp; d13Cpdb() gt;= -17 amp; d15Nair() lt;= 11 amp; d15Nair() gt;= 3) {"Corn-Fed Meat Consumers" } else if(d13Cpdb() lt;= -10 amp; d13Cpdb() gt;= -13 amp; d15Nair() lt;= 5 amp; d15Nair() gt;= 3) {"Corn amp; Sugar Cane Product Consumers, eat healthier" } else {"Diverse diets incorporating more than one source" } }) } shinyApp(ui = ui, server = server)