我一直在使用R大约一年,但只有几周时间进入Shiny。我有一些代码调用API并吐出一个很好的结果表,我想在一个闪亮的应用程序中使用 - 在单击一个操作按钮时调用API。
我一直在拍摄这个问题几天但是无法弄明白,下面是我尝试过的一些事情。
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
答案 0 :(得分:0)
已解决 - 在服务器文件中,我将eventReactive
更改为observeEvent
老实说,不是100%理解这个文档,但确实有帮助 Shiny: what is the difference between observeEvent and eventReactive?
随意发表类似问题的评论。