Chapter 15 Acknowledgements

15.1 Image Sources

15.2 Specific Acknowledgements

Ian Handel fixed the CSS, and also got me to delete Minitab from my laptop in 2016 in favour of RStudio. Thanks Ian!

15.3 Beta Testers and Helpers

  • Steph Smith @ Edinburgh Uni

15.4 Contributors

15.5 The biggest thanks

And most importantly, when I wrote this book in the very stressful summer of 2020, Fraser brought me many cups of tea, chocolate biscuits, and kept me from going crazy. Thanks, babe.


  1. Footnotes might contain something useful - or something silly. I guess you’ll need to click it to see! But remember, you can’t trust me implicitly - or anyone really↩︎

  2. If you’re reading this as part of your coursework you might be panicking about plagiarism here, after all, we spend a lot of time telling you plagiarism is the worst thing you could ever do and that we’ll use software to detect it. Code is a bit different. We are always trying to find the most efficient way of doing something, and so ideally you would all write code that was identical. Sadly, humans naturally differ in the way the think about problems. My job would be a lot easier if everybody thought the same. If I have set you this book as reading, I can swear to you I will never put your code through a plagiarism checker. That would be very stupid.↩︎

  3. ‘Default’ here means one you won’t need to install or load into the library↩︎

  4. If its not working - are you sure you have spelled it with a capital View?↩︎

  5. The Length of these variables is the number of rows in each one, which for this case is the same for each variable because this is a nice, tidy dataset↩︎

  6. A factor is also called a categorical variable, or a grouping variable. If you’re not sure you know what a factor is, wiki is a good place to review↩︎

  7. is.character(y) should give you an error message like Error: object 'y' is not found because y by itself does not exist in your environment. There’s a way around this by ‘attaching’ data to your environment, which is a bit old fashioned and can result in problems down the line with your workflow (because you won’t necessarily know if the person you’re working with has also attached the data), so I recommend against it. is.character(dat::y) should give you an error like Error in loadNamespace(name) : there is no package called 'dat'. Unsurprisingly, this is telling you that the :: sequence tells R to look inside a package for a thing called y, but that package doesn’t exist. Packages and data frames are different things.↩︎

  8. I like nord so much its the colour scheme for this book↩︎

  9. The hinges are actually calculated based on the boxplot.stats function which is a little more complicated than 95% of the data - but if you ever need to worry about this you have gone beyond what this book can teach you.↩︎

  10. This section is nearly wholly stolen from David Robinson↩︎

  11. or web search of your choice↩︎