【问题标题】:Reactive fileInput() Shiny App with Leaflet带有 Leaflet 的反应式 fileInput() 闪亮的应用程序
【发布时间】:2018-06-04 18:26:19
【问题描述】:
我认为这应该很容易解决。
我在 R 中创建了一个简单的程序,将eBird 用户的数据绘制在传单地图上,他们所要做的就是上传他们的 eBird 数据的 csv。
我的代码包含在这里:MY CODE
我已经布置好了应用程序,但在使用来自fileInput() 的输入时遇到了困难。目前,当我点击“运行应用程序”时,会打开一个窗口片刻,然后关闭并引发错误。我在上面链接的代码末尾包含了错误。
您可以在此处查看示例数据:SAMPLE DATA
我应该如何格式化从 ui 输入的文件以供服务器使用?
myData = reactive(input$MyEBirdData_in)
【问题讨论】:
标签:
r
csv
shiny
leaflet
reactive
【解决方案1】:
myData 是一个反应变量,在代码中您需要将其视为反应变量。
例如这一行:
df0 = data.frame(myData$Submission.ID, myData$Latitude, myData$Longitude)
需要:
df0 = reactive({data.frame(myData()$Submission.ID, myData()$Latitude, myData()$Longitude)
})
通过应用程序等等。而不是包装每个单独的语句,尽管您可以将所有内容作为包装器放在渲染传单函数中:
output$myMap = renderLeaflet({
df0 = data.frame(myData()$Submission.ID, myData()$Latitude, myData()$Longitude)
df = unique(df0)
names(df)[2] = 'latitude'
names(df)[3] = 'longitude'
circleIcon = makeIcon(
iconUrl = "http://www.clker.com/cliparts/Q/l/D/8/k/m/red-circle-icon-md.png",
iconWidth = 7, iconHeight = 7)
eBirdMap = leaflet(data = df) %>% addProviderTiles(providers$CartoDB.Positron) %>%
addMarkers(icon = circleIcon)
eBirdMap
})
编辑:忘记将反应变量引用为variable()。