如何根据radioButtons的inputId值在Shiny服务器中执行功能?

时间:2019-01-15 19:17:42

标签: r shiny

我正在尝试将R脚本传递给Shiny,整个脚本都是函数。我的目标是在边栏中有无线电波,知道要执行的功能,并在主面板中有一个按钮来初始化功能,正在执行的功能的寿命以及功能的描述。

如果可以显示该功能的说明,但无法执行该功能

new_tweets<-new_tweets[,-ncol(new_tweets)]
combined<-cbind(new_tweets,new_sents)
as.tibble(combined)
 MyText     favorited favoritedCount Created element_id Sentance_id Word_Count Sentiment ID   
  <fct>      <lgl>              <int> <fct>        <int>       <int>      <int>     <dbl> <fct>
1 Starbucks  TRUE                   2 2019-0~          1           1          2     0.186 1    
2 starbucks~ FALSE                  2 2019-0~          2           1          5     0.186 2    
3 starbucks~ FALSE                  1 2019-0~          3           1          2     0.186 3    
4 Icedstarb~ FALSE                  1 2019-0~          4           1          1     0.186 4    
5 Ilovestar~ TRUE                   3 2019-0~          5           1          3     0.186 5    

我希望在主面板上显示生命迹象的同时运行一个函数。 到目前为止,我什至没有设法运行该功能 注意:其中一些功能会更改目录并创建文件

1 个答案:

答案 0 :(得分:1)

(我将首先在评论中添加此内容,但很遗憾,我现在只能回答。)

我想知道的是几件事:

1)为什么要引入一个给出input $ Index值的函数?只需确保您打算对输入值进行的所有操作都在反应性上下文内即可,即将其包装在observe,observeEvent周围或在呈现输出时访问它。

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

希望这会有所帮助。