Как выполнить функцию на сервере Shiny в зависимости от значения inputId radioButtons?

Чтобы немного рассказать о том, что говорит Брэд: многие механизмы транспорта для электронной почты и Usenet и другие способы перемещения данных не являются «8-битными», что означает, что символы вне стандартного набора символов ascii могут быть искажены при транзите - например, 0x0D можно рассматривать как возврат каретки и превращаться в возврат каретки и линию. База 64 отображает все двоичные символы на несколько стандартных символов ascii и цифр и знаков препинания, поэтому они не будут искажены таким образом.

0
задан Pablo Angeles 15 January 2019 в 19:17
поделиться

1 ответ

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

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

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

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!"
}

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

0
ответ дан hjonas 15 January 2019 в 19:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: