Как выполнить функцию на сервере Shiny в зависимости от значения inputId radioButtons? - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь передать R-скрипт Shiny, весь скрипт - это функции. Моя цель - иметь радиоботтоны на боковой панели, знать, какую функцию выполнять, а на главной панели - кнопку для инициализации функции, признаки жизни выполняемой функции и описание функции.

Описание функции, если я ее показываю, но не могу выполнить функцию

library(shiny)
setwd("F:/Aplication PM10")
source("Functions.R")

ui <- fluidPage(
    titlePanel("Calculate PM10"),
    sidebarLayout(
        sidebarPanel(
            radioButtons("Index", h3("Chose the funtion you want to execute"),
                     choices = list("Pre-process" = 1,
                              "MAke a graph" = 2,
                              "Create PM10 image" = 3),
                     selected = 1)
    ),
    mainPanel(
      # Show a description o the function
      textOutput("Case")

      # button to initialize the funtion

      #HERE show the signs of life of FUNCTION 

    )
  )
)


server <- function(input, output) {
  index<-reactive({input$Index})

  output$Case<-renderText({
    if (index()==1) {
      print("Description Funtion 1")
    } else  if (index()==2){
      print("Description Funtion 2")
    }else  if (index()==3){
      print("Description Funtion 3")
    }
  })

  #HERE I NEED EXECUTE THE FUNCTION
  #if (index()==1) { function_1()} *something like this
  #note: the funtion is a loop an print signs of life, that's what I want to show in the main panel

}

shinyApp(ui = ui, server = server)

Я хочу, чтобы функция запускалась, показывая признаки жизни на главной панели. До сих пор мне даже не удалось запустить функцию Примечание: некоторые из этих функций изменяют каталоги и создают файлы

1 Ответ

0 голосов
/ 16 января 2019

(Я бы поставил это в комментарии первым, но, к сожалению, я могу ответить только на данный момент.)

Итак, несколько вещей, которые меня интересуют:

1) Почему вы ввели функцию, которая дает входное значение $ Index? Просто убедитесь, что все, что вы намереваетесь сделать с входным значением, находится в реактивном контексте, то есть оберните его вокруг наблюдаемого, наблюдающего события или обращайтесь к нему при отображении вывода.

2) Почему вы меняете каталог в начале? Вы можете просто указать путь к сценарию Function.R в исходной команде.

Не уверен, что это то, что вы ищете, но я смог запустить функции с помощью следующего кода

library(shiny)

source("Functions.R")

ui <- fluidPage(
  titlePanel("Calculate PM10"),
  sidebarLayout(
    sidebarPanel(
      radioButtons("Index", h3("Chose the funtion you want to execute"),
                   choices = list("hello" = 1,
                                  "bye" = 2,
                                  "testing" = 3),
                   selected = 1)
    ),
    mainPanel(
      # Show a description o the function
      textOutput("Case")

      # button to initialize the funtion

      #HERE show the signs of life of FUNCTION 

    )
  )
)


server <- function(input, output) {

  output$Case<-renderText({
    if (input$Index==1) {
      "Description Funtion 1"
    } else  if (input$Index==2){
      "Description Funtion 2"
    } else  if (input$Index==3){
      "Description Funtion 3"
    }
  })

  #HERE I NEED EXECUTE THE FUNCTION
  observe({
    if (input$Index==1) { 
      print(hello())
    }
    if (input$Index==2) { 
      print(bye())
    }
    if (input$Index==3) { 
      print(testing())
    }
  })

  #note: the funtion is a loop an print signs of life, that's what I want to show in the main panel

}

shinyApp(ui = ui, server = server)

с простым скриптом Functions.R, содержащим

hello <- function() {
  "Hello World!"
}

bye <- function() {
  "Bye World!"
}

testing <- function() {
  "Testing the World!"
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...