I'm trying to plot multiple plots using ggplot using lapply. For some reason, the code complains about faceting variables needing to have at least one value. The code is as below
lapply(provinces_with_highest_crime, function(regionName) {
ggplot(crimestats_regrouped[crimestats_regrouped$Province==regionName,],
aes(x=variable, y=value, color="red")) +
geom_bar(stat = "identity") + facet_wrap(~Category, ncol = 3) +
ggtitle(paste("Crimes for ", "regionName")) +
labs(x="Time Period",y="Number of Crimes")
})
If I remove the filter for crimestats_regrouped, the code runs fine, of course with the wrong output. My question is why is it happening like this and what should I do to overcome this?
Here's the output of dput to recreate the object crimestats_regrouped
structure(list(Province = structure(c(9L, 3L, 9L, 2L, 3L, 7L,
4L, 3L, 3L, 3L, 6L, 9L, 9L, 3L, 9L, 3L, 1L, 4L, 9L, 1L), .Label = c("Eastern Cape",
"Free State", "Gauteng", "Kwazulu/Natal", "Limpopo", "Mpumalanga",
"North West", "Northern Cape", "Western Cape"), class = "factor"),
Station = structure(c(146L, 428L, 655L, 791L, 840L, 893L,
232L, 127L, 101L, 374L, 728L, 146L, 655L, 899L, 67L, 970L,
238L, 232L, 655L, 398L), .Label = c("'King William''S Town'",
"'Low''S Creek'", "'Pilgrim''S Rest'", "'Rankin''S Pass'",
"'Simon''S Town'", "Aberdeen", "Acornhoek", "Actonville",
"Addo", "Adelaide", "Afsondering", "Aggeneys", "Akasia",
"Albertinia", "Alberton", "Alexander Bay", "Alexandra", "Alexandra Road",
"Alexandria", "Algoapark", "Alice", "Alicedale", "Aliwal North",
"Allanridge", "Alldays", "Amalia", "Amangwe", "Amanzimtoti",
"Amersfoort", "Amsterdam", "Apel", "Arlington", "Ashton",
"Assen", "Atamelang", "Athlone", "Atlantis", "Atteridgeville",
"Augrabies", "Avondale", "Babanango", "Badplaas", "Bainsvlei",
"Balfour", "Balfour Tvl", "Barberton", "Barkly East", "Barkly West",
"Barrydale", "Bathlaros", "Batho", "Bathurst", "Baviaanskloof",
"Bayswater", "Bayview", "Beacon Bay", "Beaufort West", "Bedford",
"Bedfordview", "Bedwang", "Bekkersdal", "Bela-Bela", "Belfast",
"Belhar", "Bell", "Bellair", "Bellville", "Bellville South",
"Belmont", "Benoni", "Berea", "Bergville", "Berlin", "Besters",
"Bethal", "Bethanie", "Bethelsdorp", "Bethlehem", "Bethulie",
"Bhekithemba", "Bhisho", "Bholo", "Bholothwa", "Biesiesvlei",
"Bishop Lavis", "Bishopstowe", "Bityi", "Blinkpan", "Bloemhof",
"Bloemspruit", "Bluewater", "Boetsap", "Boipatong", "Boitekong",
"Boithuso", "Boksburg", "Boksburg North", "Bolobedu", "Bonnievale",
"Boons", "Booysens", "Boschkop", "Boshoek", "Boshof", "Boston",
"Bothasig", "Bothaville", "Bothithong", "Botlokwa", "Botshabelo",
"Brackendowns", "Brackenfell", "Brakpan", "Bramley", "Brandfort",
"Brandvlei", "Bray", "Bredasdorp", "Breyten", "Bridge Camp",
"Brighton Beach", "Brits", "Britstown", "Brixton", "Bronkhorstspruit",
"Bronville", "Brooklyn", "Buffalo Flats", "Buffelshoek",
"Bulgerivier", "Bultfontein", "Bulwer", "Burgersdorp", "Burgersfort",
"Bushbuckridge", "Butterworth", "Cala", "Calcutta", "Caledon",
"Calitzdorp", "Calvinia", "Cambridge", "Campbell", "Camperdown",
"Camps Bay", "Cape Town Central", "Carletonville", "Carnarvon",
"Carolina", "Cathcart", "Cato Manor", "Cedarville", "Centane",
"Ceres", "Ceza", "Chalumna", "Charl Cilliers", "Charlestown",
"Chatsworth", "Chrissiesmeer", "Christiana", "Chungwa", "Citrusdal",
"Clanwilliam", "Claremont", "Clarens", "Cleveland", "Clocolan",
"Cloetesville", "Coffee Bay", "Cofimvaba", "Colenso", "Colesberg",
"Coligny", "Committees", "Conville", "Cookhouse", "Cornelia",
"Cradock", "Cramond", "Creighton", "Crystalpark", "Cullinan",
"Cumberland", "Cyferskuil", "Da Gamaskop", "Dalasile", "Dalton",
"Danielskuil", "Dannhauser", "Darling", "Davel", "Daveyton",
"Dawn Park", "De Aar", "De Deur", "De Doorns", "De Rust",
"Dealesville", "Deben", "Delareyville", "Delft", "Delmas",
"Delportshoop", "Deneysville", "Dennilton", "Despatch", "Devon",
"Dewetsdorp", "Dientjie", "Diepkloof", "Dieprivier", "Diepsloot",
"Dimbaza", "Dingleton", "Dirkiesdorp", "Dobsonville", "Donnybrook",
"Dordrecht", "Doring Bay", "Doringkloof", "Dorset", "Douglas",
"Douglasdale", "Dube", "Dududu", "Duduza", "Dullstroom",
"Duncan Village", "Dundee", "Dunnottar", "Durban Central",
"Durban North", "Durbanville", "Dutywa", "Dwaalboom", "Dysselsdorp",
"East London", "Edenburg", "Edenpark", "Edenvale", "Edenville",
"Eendekuil", "Eersterust", "Ekangala", "Ekombe", "Ekulindeni",
"Ekuvukeni", "Elands Bay", "Elands Height", "Elandskraal",
"Elandslaagte", "Eldorado Park", "Elliot", "Elliotdale",
"Elsburg", "Elsies River", "Elukwatini", "Emanguzi", "Ematimatolo",
"Ematsheni", "Embalenhle", "Empangeni", "Emzinoni", "Ennerdale",
"Erasmia", "Ermelo", "Eshowe", "Esikhaleni", "Estcourt",
"Etwatwa", "Evander", "Evaton", "Evatt", "Excelsior", "Ezakheni",
"Ezibayeni", "Ezibeleni", "Ezinqoleni", "Fairland", "Fauresmith",
"Fernie", "Ficksburg", "Fish Hoek", "Flagstaff", "Florida",
"Floukraal", "Fochville", "Folweni", "Fort Beaufort", "Fort Brown",
"Fouriesburg", "Franklin", "Franschhoek", "Fraserburg", "Ga-Rankuwa",
"Galeshewe", "Gamalakhe", "Gans Bay", "Ganyesa", "Gariepdam",
"Garies", "Garsfontein", "Gelvandale", "Genadendal", "George",
"Germiston", "Gilead", "Gingindlovu", "Giyani", "Glen", "Glen Grey",
"Glencoe", "Glendale", "Gluckstadt", "Goedemoed", "Gonubie",
"Goodwood", "Gordons Bay", "Gowan Lea", "Graaff-Reinet",
"Graafwater", "Grabouw", "Grahamstown", "Graskop", "Grassy Park",
"Gravelotte", "Greenwood Park", "Greylingstad", "Greytown",
"Griekwastad", "Groblersdal", "Groblershoop", "Groenvlei",
"Groot-Drakenstein", "Groot Brakrivier", "Groot Marico",
"Grootvlei", "Gugulethu", "Haenertsburg", "Hamburg", "Hammanskraal",
"Hammarsdale", "Hankey", "Hanover", "Harare", "Harburg",
"Harding", "Harrismith", "Hartbeesfontein", "Hartbeespoortdam",
"Hartebeeskop", "Hartswater", "Hattingspruit", "Hazyview",
"Healdtown", "Hebron", "Heidedal", "Heidelberg (Gp)", "Heidelberg(C)",
"Heilbron", "Hekpoort", "Helpmekaar", "Henderson", "Hendrina",
"Hennenman", "Hercules", "Hermanus", "Hertzogville", "Heuningspruit",
"Heuningvlei", "Hibberdene", "Highflats", "Hillbrow", "Hillcrest",
"Hilton-Kzn", "Himeville", "Hlababomvu", "Hlabisa", "Hlanganani",
"Hlobane", "Hlogotlou", "Hluhluwe", "Hobhouse", "Hoedspruit",
"Hofmeyr", "Hogsback", "Hondeklip Bay", "Honeydew", "Hoopdal",
"Hoopstad", "Hopefield", "Hopetown", "Hout Bay", "Howick",
"Huhudi", "Humansdorp", "Humewood", "Ibisi", "Ida", "Ikageng",
"Ikamvelihle", "Ilinge", "Impendle", "Inanda", "Inchanga",
"Indwe", "Ingogo", "Ingwavuma", "Int Airp King Shaka", "Intsikeni",
"Inyibiba", "Ipelegeng", "Isipingo", "Itsoseng", "Ivory Park",
"Ixopo", "Jabulani", "Jacobsdal", "Jagersfontein", "Jamestown",
"Jan Kempdorp", "Jane Furse", "Jansenville", "Jeffreys Bay",
"Jeppe", "Jericho", "Jhb Central", "Joubertina", "Jouberton",
"Joza", "Jozini", "Kaapmuiden", "Kabega Park", "Kabokweni",
"Kagisanong", "Kagisho", "Kagiso", "Kakamas", "Kameeldrift",
"Kamesh", "Kamieskroon", "Kanana", "Kanoneiland", "Kanyamazane",
"Kareedouw", "Kathu", "Katkop", "Katlehong", "Katlehong North",
"Kei Bridge", "Kei Mouth", "Kei Road", "Keimoes", "Keiskammahoek",
"Kempton Park", "Kenhardt", "Kensington", "Kenton On Sea",
"Kestell", "Kgomotso", "Khayelitsha", "Khubusidrift", "Khuma",
"Khutsong", "Kidds Beach", "Kimberley", "Kingsley", "Kinkelbos",
"Kinross", "Kirkwood", "Kirstenhof", "Klapmuts", "Klawer",
"Kleinbulhoek", "Kleinmond", "Kleinsee", "Kleinvlei", "Klerksdorp",
"Klerkskraal", "Klipgat", "Klipplaat", "Kliprivier", "Kliptown",
"Knysna", "Koffiefontein", "Kokstad", "Kolomane", "Komaggas",
"Komatipoort", "Komga", "Kommissiepoort", "Kopanong", "Koppies",
"Koster", "Kraaifontein", "Kranskop", "Kriel", "Kroonstad",
"Krugersdorp", "Kuilsrivier", "Kuruman", "Kuyasa", "Kwa Thema",
"Kwaaiman", "Kwadabeka", "Kwadukuza", "Kwadwesi", "Kwaggafontein",
"Kwamakhutha", "Kwamashu E", "Kwambonambi", "Kwamhlanga",
"Kwamsane", "Kwandengane", "Kwandengezi", "Kwanobuhle", "Kwanokuthula",
"Kwanonqaba", "Kwazakele", "Laaiplek", "Ladismith", "Lady Frere",
"Lady Grey", "Ladybrand", "Ladysmith", "Laersdrift", "Laingsburg",
"Lambertsbaai", "Lamontville", "Langa", "Langebaan", "Langlaagte",
"Lansdowne", "Laudium", "Leboeng", "Lebowakgomo", "Leeu Gamka",
"Leeudoringstad", "Lehurutshe", "Lenasia", "Lenasia South",
"Lentegeur", "Lephalale", "Leslie", "Lethabong", "Lethlabile",
"Letsitele", "Levubu", "Libode", "Lichtenburg", "Lime Acres",
"Linden", "Lindley", "Lingelethu-West", "Loate", "Loeriesfontein",
"Lomanyaneng", "Lothair", "Louwsburg", "Loxton", "Luckhoff",
"Lukholweni", "Lulekani", "Lusikisiki", "Lutzville", "Lwandle",
"Lydenburg", "Lyttelton", "Maake", "Maartenshoop", "Mabopane",
"Macassar", "Machadodorp", "Macleantown", "Maclear", "Madadeni",
"Madeira", "Madibogo", "Madikwe", "Mafube", "Magaliesburg",
"Magatle", "Magudu", "Mahamba", "Mahikeng", "Mahlabathini",
"Mahwelereng", "Maitland", "Makapanstad", "Makgobistad",
"Makhado", "Makuya", "Makwane", "Makwassie", "Malamulele",
"Maleboho", "Malelane", "Maletswai", "Malipsdrift", "Malmesbury",
"Maluti", "Malvern", "Mamelodi", "Mamelodi East", "Mandeni",
"Manenberg", "Mangaung", "Mankweng", "Maokeng", "Maphumulo",
"Mara", "Marble Hall", "Margate", "Mariannhill", "Marikana",
"Marquard", "Marydale", "Masemola", "Mashashane", "Masisi",
"Masoyi", "Matatiele", "Matlala", "Matsulu", "Maydon Wharf",
"Mayflower", "Mayville-Kzn", "Mbazwana", "Mbekweni", "Mbizana",
"Mbizeni", "Mbongolwane", "Mbuzini", "Mcgregor", "Mdantsane",
"Meadowlands", "Mecklenburg", "Mehlomnyama", "Melkbosstrand",
"Melmoth", "Meloding", "Memel", "Meyerton", "Mfuleni", "Mhala",
"Mhluzi", "Mid Illovo", "Middelburg Mpumalang", "Middelburg(Ec)",
"Middelpos", "Middledrift", "Midrand", "Milnerton", "Mitchells Plain",
"Mkhuze", "Mlungisi", "Mmabatho", "Mmakau", "Mmametlake",
"Modder River", "Modimolle", "Modjadjiskloof", "Moffatview",
"Mogwadi", "Mogwase", "Mokopane", "Mokopong", "Mokwakwaila",
"Molteno", "Mondeor", "Mondlo", "Montagu", "Montclair", "Mooi River",
"Mooifontein", "Mooinooi", "Mooiplaas", "Moorreesburg", "Morebeng",
"Morgenzon Transvaal", "Moroka", "Morokweng", "Mossel Bay",
"Motetema", "Motherwell", "Mothibistad", "Mothutlung", "Motswedi",
"Mount Ayliff", "Mount Fletcher", "Mount Frere", "Mount Road",
"Mountain Rise", "Mowbray", "Moyeni", "Mphephu", "Mpisi",
"Mpophomeni", "Mpumalanga Kzn", "Mpungamhlophe", "Mqanduli",
"Msinga", "Msinsini", "Msobomvu", "Mthatha", "Mtontsasa",
"Mtubatuba", "Mtunzini", "Muden", "Muizenberg", "Muldersdrift",
"Murraysburg", "Musina", "Mutale", "Mzamba", "Nababeep",
"Naboomspruit", "Naledi", "Namahadi", "Namakgale", "Napier",
"Navalsig", "Ndevana", "Ndumo", "Ndwedwe", "Nebo", "Nelspruit",
"Nemato", "New Brighton", "New Hanover", "Newark", "Newcastle",
"Newlands East", "Ngangelizwe", "Ngcobo", "Ngodwana", "Ngome",
"Ngqamakhwe", "Ngqeleni", "Nhlanhleni", "Niekerkshoop", "Nietverdiend",
"Nieuwoudtville", "Nigel", "Nkandla", "Noenieput", "Nondweni",
"Nongoma", "Norkempark", "Normandien", "Northam", "Norvalspont",
"Norwood", "Nottingham Road", "Noupoort", "Nquthu", "Nsuze",
"Ntabamhlophe", "Ntabankulu", "Ntabethemba", "Ntambanana",
"Ntuzuma", "Nuwerus", "Nyanga", "Nyoni", "Ocean View", "Odendaalsrus",
"Ogies", "Ohrigstad", "Olievenhoutbosch", "Olifantsfontein",
"Olifantshoek", "Onseepkans", "Or Tambo Intern Airp", "Orange Farms",
"Oranjeville", "Orkney", "Orlando", "Osizweni", "Ottosdal",
"Ottoshoop", "Oudtshoorn", "Paarl", "Paarl East", "Pabalello",
"Pacaltsdorp", "Paddock", "Palmietfontein", "Pampierstat",
"Park Road", "Parkview", "Parow", "Parys", "Patensie", "Paterson",
"Paul Roux", "Paulpietersburg", "Pearston", "Peddie", "Pella",
"Perdekop", "Petrus Steyn", "Petrusburg", "Petrusville",
"Phalaborwa", "Philadelphia", "Philippi", "Philippi East",
"Philippolis", "Philipstown", "Phoenix", "Phokeng", "Phumalanga",
"Phuthaditjhaba", "Pienaar", "Pienaarsrivier", "Piet Plessis",
"Piet Retief", "Pietermaritzburg", "Piketberg", "Pinelands",
"Pinetown", "Plessislaer", "Plettenberg Bay", "Plooysburg",
"Pofadder", "Point", "Polokwane", "Pongola", "Port Alfred",
"Port Edward", "Port Nolloth", "Port Shepstone", "Port St Johns",
"Porterville", "Postmasburg", "Potchefstroom", "Prestbury",
"Pretoria Central", "Pretoria Moot", "Pretoria North", "Pretoria West",
"Prieska", "Primrose", "Prince Albert", "Prince Alfred Hamlet",
"Protea Glen", "Pudimoe", "Punzana", "Putfontein", "Queenstown",
"Qumbu", "Rabie Ridge", "Rakgoadi", "Randburg", "Randfontein",
"Ratanda", "Ravensmead", "Rawsonville", "Reddersburg", "Redelinghuys",
"Reigerpark", "Reitz", "Reivilo", "Rhodes", "Richards Bay",
"Richmond-Kzn", "Richmond(C)", "Riebeeck East", "Riebeek West",
"Rietbron", "Rietfontein", "Rietgat", "Rietvlei", "Ritavi",
"Riversdale", "Riviersonderend", "Roadside", "Robertson",
"Roedtan", "Rondebosch", "Roodepan", "Roodepoort", "Rooiberg",
"Roossenekal", "Rosebank", "Rosedale", "Rosendal", "Rossouw",
"Rouxville", "Rust De Winter", "Rustenburg", "Saamboubrug",
"Sabie", "Sakhile", "Saldanha", "Sandringham", "Sandton",
"Sannieshof", "Saron", "Saselamani", "Sasolburg", "Sawoti",
"Scenery Park", "Schoemansdal", "Schweizer-Reneke", "Scottburgh",
"Sea Point", "Seafield", "Sebayeng", "Sebenza", "Sebokeng",
"Secunda", "Sekgosese", "Sekhukhune", "Selosesha", "Senekal",
"Senwabarwana", "Seshego", "Setlagole", "Seven Fountains",
"Severn", "Seymour", "Sharpeville", "Sheepmoor", "Siloam",
"Silverton", "Sinoville", "Siyabuswa", "Skukuza", "Smithfield",
"Somerset East", "Somerset West", "Sophia Town", "Soshanguve",
"Southport", "Soutpan", "Springbok", "Springfontein", "Springs",
"St Faiths", "St Francis Bay", "St Helena Bay", "Standerton",
"Stanford", "Steenberg", "Steinkopf", "Stella", "Stellenbosch",
"Sterkspruit", "Sterkstroom", "Steunmekaar", "Steve Vukile Tshwete",
"Steynsburg", "Steynsrus", "Steytlerville", "Stilfontein",
"Still Bay", "Storms River", "Strand", "Strandfontein", "Struisbaai",
"Strydenburg", "Stutterheim", "Sulenkama", "Sun City", "Sundra",
"Sundumbili", "Sunnyside", "Sunrise", "Sutherland", "Suurbraak",
"Swartberg", "Swartkops", "Swartruggens", "Swellendam", "Sydenham",
"Tabase", "Table Bay Harbour", "Table View", "Tamara", "Tarkastad",
"Tarlton", "Taung", "Taylors Halt", "Temba", "Tembisa", "Tembisa South",
"Thaba-Nchu", "Thabazimbi", "Thabong", "The Barrage", "Thembalethu",
"Theunissen", "Thina Falls", "Thohoyandou", "Thomas River",
"Thornhill", "Thornhill Ciskei", "Thornville", "Tierpoort",
"Tinmyne", "Tlhabane", "Tokoza", "Tolwe", "Tom Burke", "Tonga",
"Tongaat", "Touws River", "Town Hill", "Trichardt", "Trompsburg",
"Tsakane", "Tseki", "Tseseng", "Tshamutumbu", "Tshaulu",
"Tshidilamolomo", "Tshilwavhusiku", "Tshitale", "Tsineng",
"Tsolo", "Tsomo", "Tubatse", "Tuinplaas", "Tulbagh", "Tumahole",
"Tweefontein", "Tweeling", "Tweespruit", "Tyefu", "Tylden",
"Tzaneen", "Ugie", "Uitenhage", "Ulundi", "Umbilo", "Umbumbulu",
"Umhlali", "Umkomaas", "Umlazi", "Umsunduzi", "Umzimkhulu",
"Umzinto", "Uniondale", "Upington", "Upper Tugela", "Utrecht",
"Vaal Marina", "Vaalbank", "Vaalwater", "Val", "Van Reenen",
"Van Stadensrus", "Van Zylsrus", "Vanderbijlpark", "Vanderkloof",
"Vanrhynsdorp", "Vanwyksvlei", "Ventersburg", "Ventersdorp",
"Venterstad", "Vereeniging", "Verena", "Verkeerdevlei", "Verkykerskop",
"Verulam", "Victoria West", "Vierfontein", "Viljoensdrif",
"Viljoenskroon", "Villa Nora", "Villieria", "Villiers", "Villiersdorp",
"Vioolsdrif", "Virginia", "Volksrust", "Vorstershoop", "Vosburg",
"Vosloorus", "Vosman", "Vrede", "Vredefort", "Vredenburg",
"Vredendal", "Vryburg", "Vryheid", "Vulindlela", "Vuwani",
"Wakkerstroom", "Walmer", "Wanda", "Warden", "Warrenton",
"Wartburg", "Wasbank", "Waterpoort", "Waterval", "Waterval Boven",
"Wedela", "Weenen", "Welbekend", "Welkom", "Wellington",
"Wembezi", "Wentworth", "Wepener", "Wesselsbron", "Westenburg",
"Westonaria", "Westville", "Whittlesea", "Wierdabrug", "Williston",
"Willowmore", "Willowvale", "Winburg", "Windsorton", "Winterton",
"Witbank", "Witdraai", "Witpoort", "Witrivier", "Wolmaransstad",
"Wolseley", "Wolwefontein", "Wonderboompoort", "Woodstock",
"Worcester", "Wrenchville", "Wynberg", "Yeoville", "Zaaiplaas",
"Zamdela", "Zamuxolo", "Zastron", "Zebediela", "Zeerust",
"Zele", "Zonkizizwe", "Zwelitsha"), class = "factor"), Category = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 26L, 13L, 1L, 1L,
1L, 1L, 20L, 10L, 1L), .Label = c("All theft not mentioned elsewhere",
"Arson", "Assault with the intent to inflict grievous bodily harm",
"Attempted murder", "Bank robbery", "Burglary at non-residential premises",
"Burglary at residential premises", "Carjacking", "Commercial crime",
"Common assault", "Common robbery", "Driving under the influence of alcohol or drugs",
"Drug-related crime", "Illegal possession of firearms and ammunition",
"Malicious damage to property", "Murder", "Robbery at non-residential premises",
"Robbery at residential premises", "Robbery of cash in transit",
"Robbery with aggravating circumstances", "Sexual Offences",
"Sexual offences as result of police action", "Shoplifting",
"Stock-theft", "Theft of motor vehicle and motorcycle", "Theft out of or from motor vehicle",
"Truck hijacking"), class = "factor"), variable = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L), .Label = c("2005", "2006", "2007", "2008",
"2009", "2010", "2011", "2012", "2013", "2014", "2015"), class = "factor"),
value = c(6692L, 6093L, 5341L, 5108L, 5099L, 4239L, 4162L,
3931L, 3681L, 3489L, 3481L, 3468L, 3064L, 3030L, 3010L, 2967L,
2892L, 2721L, 2657L, 2585L)), .Names = c("Province", "Station",
"Category", "variable", "value"), row.names = c(NA, 20L), class = "data.frame")
also the other object
provinces_with_highest_crime <- as.list(c("Gauteng","Western Cape", "Eastern Cape", "KwazuluNatal"))