我已经构建了一些ShinyApps,现在遇到了新的障碍。具体来说,我无法从托管在URL上的内部数据库中提取数据。到目前为止,我已经能够构建一个脚本来从JSON文件提取数据(从Firefox中的开发人员工具获取URL)。解析和清理后,我可以将所需的信息获取到“ renderPrint”。但是,我无法让反应部分正常工作。
我想让用户从下拉框(例如1-5)中选择一个输入,并使用户输入具有响应性,从而更新GET请求(httr)。我已经在其他站点(例如Wikipedia)上做到了这一点,但是,这是通过响应文本完成的。是否可以使用输入内容更新URL?我目前拥有的内容(请注意:无论输入什么,这都会提取相同的基本URL-但是,如果我手动更改数字,则会得到相关的页面(例如= 1 [pg.1],= 2 [pg.2])
开始R脚本
url<-GET('https://somewebsite.com/results_json /11111?page=1),add_headers("user-agent"-'Firefox/60.0'))
url_content<-content(web3)
url_summary<-list(url_content[[2]])
results-capture.output(url_summary %>% modify_depth(2,'hostName') %>% str())
results<-as.data.frame(results)
results(as.data.frame(gsub("[[:punct:]]","",as.matrix(results))
results<-as.character(results$results)
results<-as.data.frame(results,stringAsFactors=FALSE)
END R脚本
就像我说的那样,这只是花花公子,但我想让userinput(下拉列表)更新URL。我已经进行了测试,并且无论页码如何,后续代码都可以工作。但是,无法更新...
BEGIN ShinyApp
ui<-pageWithSidebar(
titlePanel("Data Pool"),
sidebarPanel(
selectInput(inputID="pg",
label="page",
choices=c("1"="1","2"="2","3"="3"),
selected="1"),
actionButton('submit','Submit')
),
mainPanel(
verbatimTextOutput("data_ids")
) )
server<-(function(input,output) {
observeEvent(input$submit,{
x<-as.character(input$pg)
url<-GET(paste0('https://somewebsite.com/results_json/11111?page=',x), add_headers("user-agent"="Firefox/60.0))})
#here I run the same code as I did in the RScript above#
results<-as.data.frame(gsub("chr","",as.matrix(results)))
results<-as.data.frame(results[-1])
output$data_ids<-renderPrint({
as.matrix(results)})
})
shinyApp(ur=ur,server=server)
* END APP
答案 0 :(得分:0)
您可以在服务器中使用以下内容
server<-function(input,output) {
results <- reactive({
x<-as.character(input$pg)
address <- paste0('https://somewebsite.com/results_json/11111?page=',x)
# url<-GET(address, add_headers("user-agent"="Firefox/60.0"))
# results<-as.data.frame(gsub("chr","",as.matrix(results)))
# results<-as.data.frame(results[-1])
address
})
output$data_ids<-renderPrint({
as.matrix(results())
})
}
请注意,results
-active的最后一行应该是您要作为结果传递的东西。我没有要测试的网站地址,所以我只打印该地址,该地址似乎是通缉的表格。