2017-01-11 27 views
0

Я хотел бы умножить значение функции fuz < - gset_defuzzify на 2, если пользователь выбирает английский и 1,5, если Испанский.Как изменить значение функции в зависимости от того, что выбрано на переключателе (shinyapp) &

Я попытался использовать реактивное выражение, но это дало мне ошибку: «Чтение объектов из объекта shinyoutput не разрешено».

Благодаря

P.S .: I`m до сих пор пытаются получить входные значения для функции «fuzzy_inference», может быть, кто-то может помочь с этим.

библиотеки (блестящая) библиотеки (shinyjs) библиотеки (наборы) библиотеки (наборы данные)

ui <- fluidPage(numericInput(inputId = "one", label="Type number",1, min=1, max=120), 
numericInput(inputId = "two", label="Type number",1, min = 1, max=120), 
     numericInput(inputId = "three", label="Type number",1, min = 1, max=120), 
     numericInput(inputId = "four", label="Type number",1, min = 1, max=120), 
     textOutput("sub"), br(), 
     actionButton("act", "Show"), 

     br(), 

     radioButtons(inputId = "RB",label="Choose", 
        c("English", 
         "French", 
         "German", 
         "Spanish", 
         "None")), 
     textOutput("sw"), 
     textOutput("text") 


) 
server <- function(input, output){ 
output$text <- renderText({ 
RB <- switch(input$RB, 
     English= "You schould learn German.", 
     French = "You schould learn Spanish.", 
     German = "You schould learn English.", 
     Spanish = "You schould learn Portuguese.", 
     None ="You schould learn Polish.") 
}) 
variables <- set(wo = fuzzy_partition(varnames = c(notMany2 = 15, enough2 = 25, many2 = 35),FUN = fuzzy_cone, radius = 10), 
      top = fuzzy_partition(varnames = c(notMany3 = 20, enough3 = 50, many3 = 100),FUN = fuzzy_cone, radius = 25), 
      c = fuzzy_partition(varnames = c(k4 = 52, k3 = 42, k2 = 32,k1 = 22), sd = 3) 
) 
rules <- set (fuzzy_rule(wo %is% notMany2 && top %is% notMany3 
        || wo %is% notMany2 && top %is% notMany3 
        || wo %is% notMany2 && top %is% notMany3 
        , c %is% k1), 
     fuzzy_rule(wo %is% notMany2 && top %is% enough3 
        || wo %is% notMany2 && top %is% many3,c %is% k2)) 
system <- fuzzy_system(variables,rules) 

fi <- fuzzy_inference(system, list(wo = 20, top= 10)) 

    fuz <- gset_defuzzify(fi, 'centroid') 

output$sub <- renderText({fuz}) 
z <- reactive(if(output$sub=="You schould learn German") (fuz*2)) 
output$sw <- renderText({z()}) 


} 


shinyApp(ui = ui, server = server) 

ответ

0

Объект FUZ все еще существует у ли замена output$sub с fuz делать то, что вы хотели?

z <- reactive(if(fuz=="You schould learn German") (fuz*2)) 
+0

Спасибо за ваш ответ, но fuz <- gset_defuzzify (fi, 'centroid'), поэтому он никогда не будет равным ни одному тексту. Его номер. Поэтому, если выбран английский язык, это число должно быть умножено на 2. – Anastasia

+0

@Anastasia Извините, я не знаком с комплектом наборов. Однако сообщение об ошибке указывает, что вы не можете использовать 'output $ sub' в приведенной выше строке. Попробуйте объявить объект, который вы хотите использовать, как обычно в среде, и использовать его в логическом выражении. – DataJack

+0

Да, спасибо. Это работает: z <- реактивный (если (вход $ RB == "английский") (fuz * 2)) Наконец! – Anastasia

 Смежные вопросы

  • Нет связанных вопросов^_^