Я пытаюсь создать приложение Shiny с использованием R, которое отображает данные координат на карте с помощью листовки. Данные также имеют отметки даты, и я хочу иметь возможность строить координаты конкретных дней, выбранные пользователем. Я совершенно новый и для R, и для Shiny, поэтому вся помощь приветствуется. Вот фрагмент dataframe;Измените данные на листе на основе введенной даты (R, Shiny)
Date | InitialLat | InitialLong | NewLat | NewLong |
13/05/16 | 53.477403 | -2.230932 | 51.527953 | -0.13216 |
13/05/16 | 53.490599 | -2.312568 | 53.485655 | -2.237405 |
14/05/16 | 53.371535 | -2.23148 | 53.32803 | -2.246991 |
14/05/16 | 53.371535 | -2.23148 | 53.32803 | -2.246991 |
15/05/16 | 53.371535 | -2.23148 | 53.32803 | -2.246991 |
15/05/16 | 53.371535 | -2.23148 | 53.32803 | -2.246991 |
16/05/16 | 53.478316 | -2.23270 | 53.42814 | -2.17458 |
16/05/16 | 53.48868 | -2.21839 | 53.47737 | -2.23091 |
Мой код до сих пор:
library(shiny)
library(leaflet)
cleanData <- read.csv(file="CleanedJourneyData.csv", header=TRUE, sep=",")
cleanData$X <- NULL
ui <- fluidPage(
dateInput(inputId = "n_date", label="Select a date", value = "2016-05-13", min = "2016-05-13", max = "2016-10-24",
format = "dd-mm-yyyy", startview = "month",
language = "en", width = NULL),
leafletOutput("map")
)
server <- function(input, output, session) {
dailyData <- reactive(cleanData[cleanData$Date == format(input$n_date, '%d/%m/%y')])
output$map <- renderLeaflet({ leaflet(dailyData) %>% addTiles() %>%
addMarkers(~InitialLong, ~InitialLat, popup = "Start") })
}
shinyApp(ui, server)
Проблема заключается в линии;
dailyData <- reactive(cleanData[cleanData$Date == format(input$n_date, '%d/%m/%y')])
Ошибки я получаю:
Error: no applicable method for 'doResolveFormula' applied to an object of class "reactive"
То, что я пытаюсь достичь;
- пользователь выбирает дату
- формат даты изменяется на «% д /% м /% г»
- введенный дата затем используется для поиска dataframe (cleanData) создать новый dataframe (dailyData) чуть широту/долготу координат с этой выбранной датой
- обрезанными вниз dataframe вводится в карту листовки и отображается
Ввод даты отлично работает, я могу получить дату в правильном формате, но когда я пытаюсь использовать это для поиска cleanData, чтобы создать dailyData, он не работает, и я не могу понять это. Что я делаю не так? Для записи я смог заставить это работать за пределами Shiny - я вручную изменил дату в коде, и соответствующие координаты были нанесены через листовку.
Ошибка в вашей реактивной функции. Он должен быть реактивным ({}) .. отсутствуют фигурные скобки – MLavoie
Реактивная функция, которая возвращает данные, а не данные. Чтобы получить данные, назовите его так: 'leaflet (dailyData())' – HubertL