Reactive fileInput()带有Leaflet的闪亮应用程序

时间:2017-12-22 04:14:14

标签: r csv shiny leaflet reactive

我认为这应该是一个非常简单的解决方案。

我在R中创建了一个简单的程序,用于在传单地图上绘制eBird用户的数据,他们所要做的就是上传他们的eBird数据的csv。

我的代码包含在此处:MY CODE

我的应用程序都已布局,但我正在努力使用fileInput()的输入。目前,当我点击“运行应用程序”时,窗口会打开一瞬间,然后关闭并抛出错误。我在上面链接的代码末尾包含了错误。

您可以在此处查看示例数据:SAMPLE DATA

如何格式化ui中的文件输入以供服务器使用?

myData = reactive(input$MyEBirdData_in)

1 个答案:

答案 0 :(得分:0)

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()