\documentclass{beamer} \usepackage{graphicx} \usepackage{multicol} \usepackage{hyperref} \usepackage{lipsum} % for placeholder text \graphicspath{{pdf_images/}} \title{ECON 4530/5530 \\ Computational Economics} \subtitle{Best Practice of Coding} \author{Alex Gebben} \begin{document} % Title Slide \begin{frame} \titlepage \end{frame} %%%%%%%%%%%%%%%%%% \begin{frame}{What problems have you run into?} \begin{centering} \begin{itemize} \onslide<2->{\item Working directory location} \onslide<3->{\item Backslash syntax \texttt{\textbackslash} vs \texttt{/}} \onslide<4->{\item What data comes loaded on start?} \onslide<5->{\item Forgetting what the code was for} \onslide<6->{\item Need to reload from scratch} \onslide<7->{\item What to do when the code fails} \end{itemize} \end{centering} \end{frame} \begin{frame}{Work flow} \only<1-6>{ At some point you will: \begin{itemize} \onslide<2->{\item Reload an old project} \onslide<3->{\item Share code with others} \onslide<4->{\item Run multiple projects at once} \onslide<5->{\item Need to load and export data} \onslide<6->{\item Need to reproduce a result} \end{itemize} } \only<7>{\huge Let's make life easier (and harder)} \only<8>{ % Top half: two columns \vspace{-0.5em} \begin{columns}[T,onlytextwidth] \column{0.5\textwidth} \includegraphics[width=\textwidth]{clean-slate} \column{0.5\textwidth} \textbf{Never save a R session} \begin{itemize} \item{You wont get tangled by lines out of order} \item{Makes code reproducible} \item{You can update results more easily} \end{itemize} \end{columns} } \only<9->{ Alternatively you can run code to clear all data at the start of each session \texttt{\\usethis::use\_blank\_slate()} but you will need to install the library \texttt{"usethis"}: \begin{enumerate} \item \texttt{install.packages("usethis")} \item \texttt{library("usethis")} \end{enumerate} } \end{frame} %%%%%%%%%%%%%% \begin{frame}{R studio Projects} \only<1-5>{ If you are using R studio it is best practice to create a project file. \begin{itemize} \onslide<2->{\item Sets the working directory.} \onslide<3->{\item Allows all code to use relative paths.} \onslide<4->{\item \emph{Advanced:} Can store all packages with the library renv.} \onslide<5->{\item \emph{Advanced:} Can use code control with git (more on that later).} \end{itemize} } \only<6>{ \includegraphics[width=0.9\textwidth]{new-project}} \only<7->{ \begin{columns}[T,onlytextwidth] \column{0.6\textwidth} \begin{center} \includegraphics[width=\textwidth]{Project_file.png} \includegraphics[width=0.5\textwidth]{Project_file_Contents.png} \end{center} \column{0.4\textwidth} \begin{enumerate} \item Creates a .Rproj file. \item Open this file from R. \item Saved paths \end{enumerate} \end{columns} } \end{frame} %%%%%%%%%%%%%%%%%% \begin{frame}{Class Exercise} \huge Download relevant data \normalsize It is good practice to store the data is a separate folder in the location of the Rscript. Such as a "Data" folder. \end{frame} \begin{frame}{File Management} \begin{itemize} \onslide<1->{\item Create directories for data} \onslide<2->{\item Create Directories for scripts} \onslide<3->{\item Make code do most of the cleaning} \onslide<4->{\item Clear naming of files} \onslide<5->{\item Document all files with a Readme file} \end{itemize} \end{frame} \begin{frame}{Create Directories} \begin{itemize} \onslide<1->{\item Create directories for data} \onslide<2->{\item Create Directories for scripts} \onslide<3->{\item Clear naming of files} \onslide<4->{\item Document all files with a Readme file} \end{itemize} \end{frame} \begin{frame}{Manage Directories} \only<1-14>{ \begin{columns}[T,onlytextwidth] \column{0.5\textwidth} \textbf{Usefull Functions} \begin{itemize} \onslide<2->{\item \texttt{create.dir()}} \onslide<3->{\item\texttt{dir.exists()}} \onslide<4->{\item\texttt{file.exists()}} \onslide<5->{\item\texttt{list.files()}} \onslide<6->{\item\texttt{dir.create()}} \end{itemize} \column{0.5\textwidth} \onslide<7->{\textbf{Saving Data} \begin{itemize} \onslide<8->{\item \texttt{write\_csv()}} \onslide<9->{\item \texttt{write\_excel\_csv()}} \onslide<10->{\item\texttt{write\_delim()}} \onslide<11->{\item\texttt{saveRDS()}} \onslide<12->{\item\texttt{ggsave()}} \onslide<13->{\item\texttt{write.csv()}} \end{itemize} } \end{columns} \vspace{1.5em} \onslide<14>{Many other options in R review \texttt{help()} and the internet.} } \only<15>{\includegraphics[width=\textwidth]{DIR.png}} \only<16>{\includegraphics[width=\textwidth]{DIR2.png}} \end{frame} \begin{frame}{Naming Files} % \href{https://r4ds.hadley.nz/workflow-scripts.html#fn2'}{For an example DONT LEAVE AS A LINK FOR MY REFRENCE} It might be tempting to name your files code.R or myscript.R, but you should think a bit harder before choosing a name for your file. Three important principles for file naming are as follows\: File names should be machine readable\: avoid spaces, symbols, and special characters. Don’t rely on case sensitivity to distinguish files. File names should be human readable\: use file names to describe what’s in the file. File names should play well with default ordering\: start file names with numbers so that alphabetical sorting puts them in the order they get used. \end{frame} \end{document}