Я хотел бы умножить значение функции 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)
Спасибо за ваш ответ, но fuz <- gset_defuzzify (fi, 'centroid'), поэтому он никогда не будет равным ни одному тексту. Его номер. Поэтому, если выбран английский язык, это число должно быть умножено на 2. – Anastasia
@Anastasia Извините, я не знаком с комплектом наборов. Однако сообщение об ошибке указывает, что вы не можете использовать 'output $ sub' в приведенной выше строке. Попробуйте объявить объект, который вы хотите использовать, как обычно в среде, и использовать его в логическом выражении. – DataJack
Да, спасибо. Это работает: z <- реактивный (если (вход $ RB == "английский") (fuz * 2)) Наконец! – Anastasia