我正在尝试使用R创建一个Shiny应用程序,通过传单在 Map 上绘制坐标数据 . 数据还有日期戳,我希望能够为R和Shiny绘制一个特定的日子' coordinates as chosen by the user. I' m,所以所有的帮助都表示赞赏 . 这是 dataframe 的片段;
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"
我想要实现的是;
-
用户选择日期
-
日期格式更改为'%d/%m/%y'
-
输入的日期然后用于搜索 dataframe (cleanData)以创建新的 dataframe (dailyData),其中只包含该选定日期的纬度/经度坐标
-
将修剪后的 dataframe 输入到传单 Map 中并显示
日期输入工作正常,我可以以正确的格式获取日期,但是当我尝试使用它来搜索cleanData来创建dailyData时它不起作用,我无法弄明白 . 我究竟做错了什么?为了记录,我能够在Shiny之外使用它 - 我在代码中手动更改了日期,并通过传单绘制了相应的坐标 .
2 回答
我修改了你的代码 . 看看这是否是你真正想要的 .
希望能帮助到你!
在精通R的同事的帮助下,我找到了我的问题的答案;
您可以看到我还添加了使用Kyle Walker创建的函数创建点对点线的功能 . https://rpubs.com/walkerke/points_to_line
所以现在当我更改输入的日期时,该日期的相应数据被绘制在传单 Map 上,其中的线条连接起点和终点 .