我写了一个简单的闪亮应用来说明我从网站上获取数据的问题。这是UI代码:
library(shiny)
shinyUI(fluidPage(
# Application title
titlePanel("Test App"),
# Sidebar with slider inputs
sidebarLayout(
sidebarPanel(
actionButton("button", "Fetch Data")
),
mainPanel(
tabsetPanel(
tabPanel("Data", textOutput("crimelist"))
)
)
)
)
)
这是服务器代码:
library(shiny)
# Define server logic
shinyServer(function(input, output, session) {
# Get a list of the different types of crime
observeEvent(input$button, {
url <- "https://phl.carto.com/api/v2/sql?format=csv&q=SELECT
distinct rtrim(text_general_code) as text_general_code
FROM incidents_part1_part2
order by text_general_code"
crimelist <- read.csv(url(url), stringsAsFactors = FALSE)$text_general_code
output$crimelist <- renderText({crimelist})
})
})
正在提取的数据在https://cityofphiladelphia.github.io/carto-api-explorer/#incidents_part1_part2中描述。
当我在本地环境中运行这个闪亮的应用程序时,它运行得很好。将它发布到shinyapps.io并运行它时,单击按钮获取数据时应用程序失败。在闪亮的日志中,它报告以下内容:
2017-10-11T14:46:31.242058+00:00 shinyapps[224106]: Warning in
open.connection(file, "rt") :
2017-10-11T14:46:31.242061+00:00 shinyapps[224106]: URL 'https://phl.carto.com/api/v2/sql?format=csv&q=SELECT distinct
rtrim(text_general_code) as text_general_code
2017-10-11T14:46:31.242062+00:00 shinyapps[224106]: FROM incidents_part1_part2
2017-10-11T14:46:31.242063+00:00 shinyapps[224106]: order by text_general_code': status was 'URL using bad/illegal format or missing URL'
2017-10-11T14:46:31.243062+00:00 shinyapps[224106]: Warning: Error in open.connection: cannot open connection
我真的很难过 - 这是一个闪亮的服务器问题吗?如果那里有人有线索,我全都耳朵!
答案 0 :(得分:2)
我在多个主板上发布了这个问题,而Shinyapps.io用户Google小组的Joshua Spiewak解决了我的问题:
您需要对网址进行编码才能使其有效,例如: https://phl.carto.com/api/v2/sql?format=csv&q=SELECT%20distinct%20rtrim(text_general_code)%20as%20text_general_code%20FROM%20incidents_part1_part2%20order%20by%20text_general_code
shinyapps.io在Linux上运行,因此可能会使用curl来获取此URL。我的猜测是你在本地使用Windows,它使用一种不太严格的机制来容忍你在URL中的空格和换行符。
在做出他的建议更改后,它现在按预期工作。谢谢,约书亚!