渲染表R闪亮动作按钮

时间:2017-05-19 12:01:59

标签: r api shiny

我一直在使用R大约一年,但只有几周时间进入Shiny。我有一些代码调用API并吐出一个很好的结果表,我想在一个闪亮的应用程序中使用 - 在单击一个操作按钮时调用API。

我一直在拍摄这个问题几天但是无法弄明白,下面是我尝试过的一些事情。

  • 如果我删除了操作按钮,则只要应用程序打开,API就会调用并显示。
  • 使用简单文本替换API会在单击按钮时显示文本。
  • 在动作内部渲染表会导致UI想知道表格的位置(按钮未按下)并发出错误。

API包含敏感信息,所以我删除了一些典型的返回添加的细节(当访问URL时它将Json返回到浏览器)。 关于我可能遗失的任何想法?

API返回

{"meta":{"request":{"granularity":"Monthly","main_domain_only":false,"format":null,"domain":"cnn.com","start_date":"2017-02-01","end_date":"2017-02-28","limit":null,"country":"world"},"status":"Success","last_updated":"2017-04-30"},"visits":[{"date":"2017-02-01","visits":100000`}]}

UI.r

library(shiny)

    shinyUI(fluidPage(
    headerPanel(actionButton("do", "Click Me")),

        mainPanel(dataTableOutput("mytable"))
      ))

Server.r

library(shiny)

function(input, output) {
 #Call API, flatten Json return 
Visits_Final<- eventReactive(input$do, {
Results<- paste0("https://api.com/",
                  "site.com",
                  "apikey=***") %>%
  map(fromJSON, flatten = FALSE)



#Transform into DF
visits_temp= data.frame(date=NA,visits=NA,ID=NA)

for(i in 1:1){
  DF_L<- as.data.frame(Results[[i]]$visits)
  ID <- (rep(i, nrow(DF_L)))
  DF_L<- cbind(DF_L, ID)
  Visits_Final<-rbind(visits_temp, DF_L)}})

  #Output to UI  
 output$mytable <- renderDataTable({Visits_Final()})

}

提前致谢!

编辑

for(i in 1:i){

根据BigDataScientist评论,改为

for(i in 1:1){

添加了代码评论

添加系统信息: R 3.3.2 R Studio版本1.0.143 OS Sierra 10_12_3

1 个答案:

答案 0 :(得分:0)

已解决 - 在服务器文件中,我将eventReactive更改为observeEvent

老实说,不是100%理解这个文档,但确实有帮助 Shiny: what is the difference between observeEvent and eventReactive?

随意发表类似问题的评论。