get_map в документе Markdown

Следующий код

map<-get_map(location=params$chosenState, zoom=6,maptype='hybrid',source="google")
data<-sightings[sightings$State==params$chosenState, ]
ggmap(map, base_layer=ggplot(aes(x=lng,y=lat),data=data)) +geom_point(color="red",alpha=0.3)

отлично работает на консоли, при условии, что я настроил фрейм данных под названием params и прочитал свои данные в фрейме данных под названием наблюдения. Он создает этот график, когда параметр params$chosenState равен «OH».

введите здесь описание изображения

Однако, когда я перемещаю все в документ Markdown

---
title: "UFOs"
output: html_document
params:
  chosenState: "OH"
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(ggmap)
library(ggplot2)
sightings<- read.csv("UFOs_coord.csv",header=TRUE)
UFOPlot<-function(){
  map<-get_map(location=params$chosenState, zoom = 6,maptype='hybrid',source="google")
  data<-sightings[sightings$State==params$chosenState, ]
  ggmap(map, base_layer=ggplot(aes(x=lng,y=lat),data=data))
}
```

## UFO Sightings

Below is the locations of UFO sightings in  ``r params$chosenState``
```{r}
UFOPlot()
```

и пошел вязать, я получаю это сообщение об ошибке

Ошибка в if (is.waive(data) || empty(data)) return(cbind(data, PANEL = integer(0))) : отсутствует значение там, где требуется TRUE/FALSE Вызовы: ... lapply -> FUN -> -> е -> -> е

Мне интересно, есть ли что-то основное в использовании ggmap в Markdown, чего мне не хватает? Это первый раз, когда я когда-либо пытался это сделать.

Вот начало данных кадра данных

     Date...Time Country          City State    Shape      lat       lng
9   12/19/16 18:30     USA Huber Heights    OH Cylinder 39.85902 -84.11136
21  12/18/16 19:00     USA     Lancaster    OH    Light 39.71368 -82.59933
321 11/18/16 23:30     USA      Columbus    OH Cylinder 39.96226 -83.00071
326 11/18/16 19:15     USA   Stone Creek    OH Triangle 40.39729 -81.56206
327 11/18/16 18:30     USA    Carrollton    OH   Circle 40.57284 -81.08565
336 11/17/16 21:30     USA        Athens    OH    Light 39.32924 -82.10126

ОБНОВИТЬ:

Может быть, у меня что-то не так с моей логической подпиской? dplyr и вызов ggmap, предложенный Дхираджем, похоже, помогли. Этот документ вяжется просто отлично

---
title: "UFOs"
output: html_document
params:
  chosenState: "OH"
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, message= FALSE, warning=FALSE)
library(ggmap)
library(ggplot2)
library(dplyr)
sightings<- read.csv("UFOs_coord.csv",header=TRUE)
UFOPlot<-function(){
  map<-get_map(location=params$chosenState, zoom = 6,maptype='hybrid',source="google")
  data <- sightings %>% select(-Summary, -Shape) %>% filter(State==params$chosenState)
  ggmap(map) + geom_point(data=data, aes(x=lng,y=lat), color="red", alpha=0.3)

}
```
## UFO Sightings

Below is the locations of UFO sightings in  ``r params$chosenState``
```{r}
UFOPlot()
```

person jerH    schedule 13.03.2017    source источник
comment
Я предполагаю, что params$chosenState находится в Огайо. Не могли бы вы добавить некоторые значения широты и долготы из sightings для Огайо, чтобы это воспроизводилось?   -  person Dhiraj    schedule 13.03.2017
comment
правильно, я настроил его как документ уценки с параметрами, чтобы вы могли выбрать состояние. Я отредактирую OP, включив в него полный документ Markdown и заголовок файла данных.   -  person jerH    schedule 13.03.2017


Ответы (1)


Я попробовал следующее в фрагменте кода в файле rmarkdown, и, похоже, он работает нормально:

library(ggmap)
lat <- 39.86+rnorm(10,0.5)
lng <- -82.59 + rnorm(10, 0.5)
sightings <- data.frame(cbind(lng,lat))

map<-get_map(location='Ohio', zoom = 6,maptype='hybrid',source="google")
ggmap(map) + geom_point(data=sightings, aes(x=lng,y=lat))
person Dhiraj    schedule 13.03.2017