【问题标题】:Render table R Shiny upon action button在操作按钮上渲染表格 R Shiny
【发布时间】:2017-05-19 12:01:58
【问题描述】:

我已经使用 R 大约一年了,但我只用了几个星期就开始使用 Shiny。我有一些代码调用 API 并吐出一个很好的结果表,我想在 Shiny 应用程序中使用这些结果表 - 当单击操作按钮时调用 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){

已添加代码 cmets

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

【问题讨论】:

  • for(i in 1:i){:这看起来很奇怪。应该是for(i in 1:length(Results)){ 吗?
  • @BigDataScientist 正确,为了简单起见,我已经更改了它(上限是可变的,取决于 API 调用)。编辑为 1:1,这适用于本示例 - 好地方,谢谢。

标签: r api shiny


【解决方案1】:

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

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

如有类似问题,请随时发表评论。

【讨论】:

  • 在几乎所有情况下,如果您需要使用操作按钮触发操作,请使用observeEvent。概念很明确:在触发此事件(单击按钮)时执行此操作。这是反应式中最容易的部分。当您需要使用响应式值和表达式时,准备一次又一次地阅读有关响应式的文章。请务必查看 Joe Cheng 在 Shiny 开发会议中的视频教程,该视频教程托管在 RStudio 网站的会议视频部分。
  • 谢谢,学习了哈哈!会给 Joe Cheng 的视频看一看。
猜你喜欢
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 2018-01-26
  • 1970-01-01
  • 2021-10-18
  • 2014-10-18
  • 1970-01-01
  • 2020-11-08
相关资源
最近更新 更多