Реактивное приложение fileInput () Shiny с Leaflet

Я думаю, это должно быть довольно легко исправить.

Я создал простую программу на R, которая отображает данные пользователя eBird на карте листовок. Все, что им нужно сделать, это загрузить csv своих данных eBird.

Мой код включен здесь: МОЙ КОД

У меня есть приложение, но я не могу использовать ввод от fileInput(). В настоящее время, когда я нажимаю «Запустить приложение», окно открывается на долю секунды, затем закрывается и выдает ошибку. Я включил ошибку в конце своего кода по указанной выше ссылке.

Вы можете просмотреть образцы данных здесь: ОБРАЗЕЦ ДАННЫХ

Как мне отформатировать ввод файла из пользовательского интерфейса для использования сервером?

myData = reactive(input$MyEBirdData_in)

person Heliornis    schedule 22.12.2017    source источник


Ответы (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().

person Scientist_jake    schedule 22.12.2017