Использование ifelse для создания ggplot: длинная длина объекта не кратна короткой длине объекта - PullRequest
0 голосов
/ 07 марта 2019

У меня есть фрейм данных с именем Completed, который выглядит примерно так:

X1 Latitude Longitude Conservation
1     40        -8         Yes
2     -5        10         No
3     20        30         Yes
4      5        -10        No

Я хотел бы создать очень простой график с точками на карте мира, которые имеют цветовую кодировку, в зависимости от того, является ли сохранение = Да или Нет. Вот код, который я пробовал:

world <- map_data("world")
gg1 <- ggplot() + geom_polygon(data = world, aes(x=long, y = lat, group = group)) + 
  coord_fixed(1.3)


labs <- data.frame(
  long = Completed$Longitude,
  lat = Completed$Latitude,
  stringsAsFactors = FALSE
  )  


ID.list <- unique(Completed$X1)
for (X1 in ID.list) {


  ifelse(Completed$Conservation %in% 'Yes',  gg1  +
  geom_point(data = labs, aes(x = long, y = lat), color = "yellow", size = 2),  gg1  +
  geom_point(data = labs, aes(x = long, y = lat), color = "pink", size = 2)) 

  }

Это приводит к ошибке: «длинная длина объекта не кратна короткой длине объекта»

Я очень плохо знаком с R, поэтому изо всех сил пытаюсь понять, что означает эта проблема и как исправить мой код. Помощь приветствуется!

1 Ответ

0 голосов
/ 07 марта 2019

Краткий ответ: используйте aes(color = Conservation) вместо for петли.

Полное решение:

Completed <- tribble(
~X1, ~Latitude, ~Longitude, ~Conservation,
1,     40,        -8,         "Yes",
2,     -5,        10,         "No",
3,     20,        30,         "Yes",
4,      5,        -10,        "No"
)

world <- map_data("world")
gg1 <- ggplot() + geom_polygon(data = world, aes(x=long, y = lat, group = group)) + 
  coord_fixed(1.3)

gg1 + 
  geom_point(aes(x = Longitude, y = Latitude, color = Conservation), 
                 data = Completed, size = 2) +
  scale_color_manual(values = c("pink", "yellow"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...