需要一些帮助,尝试使用R中的ifelse和geocode2为不同类型的两栖动物制作一张带有不同颜色标记的地图



我正在为我的蝾螈采样点论文制作一张地图。我对这些都非常陌生,所以我真的不太了解代码,但我的顾问给了我一个她以前用于我正在投入的其他东西的代码的大致概述。我遇到麻烦的地方是网站标记的类型和他们的颜色。我确实制作了一张我开始工作的原始地图,但它只有青蛙和蝾螈,但我正在努力修复它,将蟾蜍和蝾螈分别包括在内,并使用不同的颜色。

到目前为止,我一直在努力为地图上每种两栖动物的遗址标记做些什么。

getColor <- ifelse(geocoded2$Type =="frog", "green")
ifelse(geocoded2$Type=="toad", "orange")
ifelse(geocoded2$Type=="salamander", "blue",
ifelse(geocoded2$Type=="newt", "purple"))

我得到的这些错误是:

Error in ifelse(geocoded2$Type == "frog", "green") : 
argument "no" is missing, with no default

我有地图和图例可以使用,但就是无法从我的excel文件中获得实际要处理的类型这是我用来做地图的东西;图例:

# create the map
map <- leaflet(geocoded2) %>%
addProviderTiles(providers$Esri.OceanBasemap) %>%
#addTiles() %>%  # use the default base map which is OpenStreetMap tiles
fitBounds(-165,90,165,-90)%>%
clearBounds()%>%
addAwesomeMarkers(~Long, ~Lat, icon=icons, label=~Type) %>%
addLegend("topright", colors= c("green", "blue", "red", "purple"), labels=c("Frog","Salamander", "toad", "Newt"), opacity=1 )
# plot the map
map

这应该是更正的ifelse版本:

ifelse(geocoded2$Type =="frog", "green", 
ifelse(geocoded2$Type=="toad", "orange", 
ifelse(geocoded2$Type=="salamander", "blue",
ifelse(geocoded2$Type=="newt", "purple"), "black")))

或者更容易理解的case_when()格式:

library(dplyr)
getColor <- case_when(
geocoded2$Type =="frog" ~ "green",
geocoded2$Type=="toad" ~ "orange",
geocoded2$Type=="salamander" ~ "blue",
geocoded2$Type=="newt" ~ "purple",
TRUE ~ "black"
)

两种方法都包括一个默认的";黑色";颜色,以防输入中出现意外值。

最新更新