workflowr  
 
Last updated:  2025-01-06
Checks:    2
  0
Knit directory:  analysis-user-group/ 
 
This reproducible R Markdown 
analysis was created with workflowr  (version
1.7.1). The Checks  tab describes the reproducibility checks
that were applied when the results were created. The Past
versions  tab lists the development history.
 
 
Great! Since the R Markdown file has been committed to the Git
repository, you know the exact version of the code that produced these
results.
 
 
 
Great! You are using Git for version control. Tracking code development
and connecting the code version to the results is critical for
reproducibility.
The results in this page were generated with repository version
8eec2ce .
See the Past versions  tab to see a history of the changes made
to the R Markdown and HTML files.
Note that you need to be careful to ensure that all relevant files for
the analysis have been committed to Git prior to generating the results
(you can use wflow_publish or
wflow_git_commit). workflowr only checks the R Markdown
file, but you know if there are other scripts or data files that it
depends on. Below is the status of the Git repository when the results
were generated:
Ignored files:
    Ignored:    .DS_Store
    Ignored:    analysis/.DS_Store
 
Note that any generated files, e.g. HTML, png, CSS, etc., are not
included in this status report because it is ok for generated content to
have uncommitted changes.
 
 
 
 
 
 
These are the previous versions of the repository in which changes were
made to the R Markdown (analysis/0_start.Rmd) and HTML
(docs/0_start.html) files. If you’ve configured a remote
Git repository (see ?wflow_git_remote), click on the
hyperlinks in the table below to view the files as they were in that
past version.
File
 
Version
 
Author
 
Date
 
Message
 
 
 
Rmd
 
8eec2ce 
 
DrThomasOneil
 
2025-01-06
 
Initial Deployment
 
 
html
 
660b0f8 
 
DrThomasOneil
 
2025-01-06
 
Build site.
 
 
html
 
2e79a1d 
 
DrThomasOneil
 
2025-01-06
 
Build site.
 
 
Rmd
 
451a21f 
 
DrThomasOneil
 
2025-01-06
 
Initial Deployment
 
 
Rmd
 
2eeb8dc 
 
DrThomasOneil
 
2024-12-26
 
first draft
 
 
 
 
 
 
 
 
This 10-session workshop series is designed to introduce users to R
programming with a focus on bioinformatics workflows and
reproducibility. It emphasizes the mindset shift required to transition
from manual tools like Excel to programmatic data analysis.
Session 0: What Is Programming? Shifting
Mindsets  
Goal:  
Introduce programming concepts and the mindset behind programmatic
workflows. 
- Transition from manual tools (e.g. Excel & Prism) to
programming-based workflows. 
- Understand the concept of handling data using code. 
- Learn to navigate directories and file paths programmatically. 
- Emphasize reproducibility and structured workflows.
 
Practice:  
- Navigating directories (getwd(),
setwd()). 
- Creating folders and listing files.
 
Go
to Session → 
 
Session 1: Getting Started with R and RStudio  
Goal:  Set up R and RStudio, and get familiar with
the interface.
Installing R and RStudio. 
Exploring the interface – Console, Environment, Scripts. 
Setting up a project. 
Installing and loading packages. 
 
Practice:  - Create and save an R script. - Install
and load a package (e.g., tidyverse).
 
Session 2: Data Types and Structures  
Goal:  Learn about data types and structures in
R.
Basic data types: numeric, character, logical. 
Data structures: vectors, matrices, data frames, lists. 
Importing data (Excel and CSV files). 
Viewing and summarizing data. 
 
Practice:  - Load flow cytometry data and explore
structure. - Create and index vectors and data frames.
 
Session 3: Data Manipulation with
dplyr  
Goal:  Introduce dplyr for filtering,
mutating, and summarizing data.
Filtering rows (filter()), selecting columns
(select()). 
Adding new columns (mutate()). 
Grouping and summarizing (group_by() +
summarize()). 
 
Practice:  - Calculate proportions for CD4/CD8
populations. - Add calculated columns for analysis.
 
Session 4: Basic Programming and Control
Structures  
Goal:  Understand programming logic for automating
tasks.
Variables and assignments. 
Conditional statements (if, else). 
Loops (for, while). 
Writing functions. 
 
Practice:  - Write functions to calculate percentages
dynamically. - Automate filtering tasks.
 
Session 5: Visualization with ggplot2 – Part
1  
Goal:  Create and customize visualizations.
Basics of ggplot2 – scatter, bar, and boxplots. 
Customizing labels, themes, and colors. 
 
Practice:  - Visualize CD4 vs CD8 proportions. - Add
colors and themes.
 
Session 6: Advanced Visualization with ggplot2
– Part 2  
Goal:  Learn advanced visualization techniques.
Faceting and small multiples. 
Combining plots (grid layouts). 
Saving high-resolution plots. 
 
Practice:  - Create faceted boxplots for subsets. -
Export plots for reports.
 
Session 7: Statistical Analysis  
Goal:  Understand descriptive and inferential
statistics.
Descriptive statistics: mean, median, mode. 
Hypothesis testing (t-tests, ANOVA). 
Correlation and regression. 
 
Practice:  - Test differences in CD4 proportions. -
Perform correlation analysis.
 
Session 8: Reproducible Reports with RMarkdown  
Goal:  Build dynamic and shareable reports.
Introduction to RMarkdown. 
Combining text, code, and visuals. 
Exporting to PDF and HTML. 
 
Practice:  - Create a report summarizing flow
cytometry data. - Embed visualizations and tables.
 
Session 9: Mini Project – Putting It All
Together  
Goal:  Apply skills to a complete workflow.
Practice:  - Load and clean data. - Summarize and
visualize trends. - Run tests and compile everything into a report.
 
Session 10: Troubleshooting and Workflow
Design  
Goal:  Teach debugging strategies and workflow
optimization.
Debugging errors and warnings. 
Writing modular scripts (functions). 
Organizing larger projects. 
Brief intro to Git/GitHub for version control. 
 
Practice:  - Debug a script with errors. -
Restructure code for reusability.
 
LS0tCnRpdGxlOiAiR2V0dGluZyBTdGFydGVkIGluIFIgKDIwMjUpIgphdXRob3I6ICJUaG9tYXMgTydOZWlsIgpvdXRwdXQ6CiAgd29ya2Zsb3dyOjp3Zmxvd19odG1sOgogICAgdG9jOiBubwotLS0KClRoaXMgMTAtc2Vzc2lvbiB3b3Jrc2hvcCBzZXJpZXMgaXMgZGVzaWduZWQgdG8gaW50cm9kdWNlIHVzZXJzIHRvIFIgcHJvZ3JhbW1pbmcgd2l0aCBhIGZvY3VzIG9uIGJpb2luZm9ybWF0aWNzIHdvcmtmbG93cyBhbmQgcmVwcm9kdWNpYmlsaXR5LiBJdCBlbXBoYXNpemVzIHRoZSBtaW5kc2V0IHNoaWZ0IHJlcXVpcmVkIHRvIHRyYW5zaXRpb24gZnJvbSBtYW51YWwgdG9vbHMgbGlrZSBFeGNlbCB0byBwcm9ncmFtbWF0aWMgZGF0YSBhbmFseXNpcy4KCjx3aW1yPgoKIyMgKipTZXNzaW9uIDA6IFdoYXQgSXMgUHJvZ3JhbW1pbmc/IFNoaWZ0aW5nIE1pbmRzZXRzKioKCjxkaXYgY2xhc3M9ImhpbnQtZ29hbHMiPgoqKkdvYWw6KiogIApJbnRyb2R1Y2UgcHJvZ3JhbW1pbmcgY29uY2VwdHMgYW5kIHRoZSBtaW5kc2V0IGJlaGluZCBwcm9ncmFtbWF0aWMgd29ya2Zsb3dzLiAgIAotIFRyYW5zaXRpb24gZnJvbSBtYW51YWwgdG9vbHMgKGUuZy4gRXhjZWwgJiBQcmlzbSkgdG8gcHJvZ3JhbW1pbmctYmFzZWQgd29ya2Zsb3dzLiAgCi0gVW5kZXJzdGFuZCB0aGUgY29uY2VwdCBvZiBoYW5kbGluZyBkYXRhIHVzaW5nIGNvZGUuICAKLSBMZWFybiB0byBuYXZpZ2F0ZSBkaXJlY3RvcmllcyBhbmQgZmlsZSBwYXRocyBwcm9ncmFtbWF0aWNhbGx5LiAgCi0gRW1waGFzaXplIHJlcHJvZHVjaWJpbGl0eSBhbmQgc3RydWN0dXJlZCB3b3JrZmxvd3MuICAKPC9kaXY+Cgo8ZGl2IGNsYXNzPSJoaW50LXByYWN0aWNlIj4KKipQcmFjdGljZToqKiAgCi0gTmF2aWdhdGluZyBkaXJlY3RvcmllcyAoYGdldHdkKClgLCBgc2V0d2QoKWApLiAgCi0gQ3JlYXRpbmcgZm9sZGVycyBhbmQgbGlzdGluZyBmaWxlcy4gIAo8L2Rpdj4KCltHbyB0byBTZXNzaW9uIOKGkl0oaHR0cHM6Ly9kcnRob21hc29uZWlsLmdpdGh1Yi5pby9hbmFseXNpcy11c2VyLWdyb3VwL3ItdHV0b3JpYWwvX2Jvb2svaW50cm9kdWN0aW9uLmh0bWwpCgo8d2ltcj4KCiMjICoqU2Vzc2lvbiAxOiBHZXR0aW5nIFN0YXJ0ZWQgd2l0aCBSIGFuZCBSU3R1ZGlvKioKKipHb2FsOioqIFNldCB1cCBSIGFuZCBSU3R1ZGlvLCBhbmQgZ2V0IGZhbWlsaWFyIHdpdGggdGhlIGludGVyZmFjZS4KCi0gSW5zdGFsbGluZyBSIGFuZCBSU3R1ZGlvLgotIEV4cGxvcmluZyB0aGUgaW50ZXJmYWNlIOKAkyBDb25zb2xlLCBFbnZpcm9ubWVudCwgU2NyaXB0cy4KLSBTZXR0aW5nIHVwIGEgcHJvamVjdC4KLSBJbnN0YWxsaW5nIGFuZCBsb2FkaW5nIHBhY2thZ2VzLgoKKipQcmFjdGljZToqKgotIENyZWF0ZSBhbmQgc2F2ZSBhbiBSIHNjcmlwdC4KLSBJbnN0YWxsIGFuZCBsb2FkIGEgcGFja2FnZSAoZS5nLiwgYHRpZHl2ZXJzZWApLgoKPHdpbXI+CgojIyAqKlNlc3Npb24gMjogRGF0YSBUeXBlcyBhbmQgU3RydWN0dXJlcyoqCioqR29hbDoqKiBMZWFybiBhYm91dCBkYXRhIHR5cGVzIGFuZCBzdHJ1Y3R1cmVzIGluIFIuCgotIEJhc2ljIGRhdGEgdHlwZXM6IG51bWVyaWMsIGNoYXJhY3RlciwgbG9naWNhbC4KLSBEYXRhIHN0cnVjdHVyZXM6IHZlY3RvcnMsIG1hdHJpY2VzLCBkYXRhIGZyYW1lcywgbGlzdHMuCi0gSW1wb3J0aW5nIGRhdGEgKEV4Y2VsIGFuZCBDU1YgZmlsZXMpLgotIFZpZXdpbmcgYW5kIHN1bW1hcml6aW5nIGRhdGEuCgoqKlByYWN0aWNlOioqCi0gTG9hZCBmbG93IGN5dG9tZXRyeSBkYXRhIGFuZCBleHBsb3JlIHN0cnVjdHVyZS4KLSBDcmVhdGUgYW5kIGluZGV4IHZlY3RvcnMgYW5kIGRhdGEgZnJhbWVzLgoKPHdpbXI+CgojIyAqKlNlc3Npb24gMzogRGF0YSBNYW5pcHVsYXRpb24gd2l0aCBgZHBseXJgKioKKipHb2FsOioqIEludHJvZHVjZSBgZHBseXJgIGZvciBmaWx0ZXJpbmcsIG11dGF0aW5nLCBhbmQgc3VtbWFyaXppbmcgZGF0YS4KCi0gRmlsdGVyaW5nIHJvd3MgKGBmaWx0ZXIoKWApLCBzZWxlY3RpbmcgY29sdW1ucyAoYHNlbGVjdCgpYCkuCi0gQWRkaW5nIG5ldyBjb2x1bW5zIChgbXV0YXRlKClgKS4KLSBHcm91cGluZyBhbmQgc3VtbWFyaXppbmcgKGBncm91cF9ieSgpYCArIGBzdW1tYXJpemUoKWApLgoKKipQcmFjdGljZToqKgotIENhbGN1bGF0ZSBwcm9wb3J0aW9ucyBmb3IgQ0Q0L0NEOCBwb3B1bGF0aW9ucy4KLSBBZGQgY2FsY3VsYXRlZCBjb2x1bW5zIGZvciBhbmFseXNpcy4KCjx3aW1yPgoKIyMgKipTZXNzaW9uIDQ6IEJhc2ljIFByb2dyYW1taW5nIGFuZCBDb250cm9sIFN0cnVjdHVyZXMqKgoqKkdvYWw6KiogVW5kZXJzdGFuZCBwcm9ncmFtbWluZyBsb2dpYyBmb3IgYXV0b21hdGluZyB0YXNrcy4KCi0gVmFyaWFibGVzIGFuZCBhc3NpZ25tZW50cy4KLSBDb25kaXRpb25hbCBzdGF0ZW1lbnRzIChgaWZgLCBgZWxzZWApLgotIExvb3BzIChgZm9yYCwgYHdoaWxlYCkuCi0gV3JpdGluZyBmdW5jdGlvbnMuCgoqKlByYWN0aWNlOioqCi0gV3JpdGUgZnVuY3Rpb25zIHRvIGNhbGN1bGF0ZSBwZXJjZW50YWdlcyBkeW5hbWljYWxseS4KLSBBdXRvbWF0ZSBmaWx0ZXJpbmcgdGFza3MuCgo8d2ltcj4KCiMjICoqU2Vzc2lvbiA1OiBWaXN1YWxpemF0aW9uIHdpdGggYGdncGxvdDJgIOKAkyBQYXJ0IDEqKgoqKkdvYWw6KiogQ3JlYXRlIGFuZCBjdXN0b21pemUgdmlzdWFsaXphdGlvbnMuCgotIEJhc2ljcyBvZiBgZ2dwbG90MmAg4oCTIHNjYXR0ZXIsIGJhciwgYW5kIGJveHBsb3RzLgotIEN1c3RvbWl6aW5nIGxhYmVscywgdGhlbWVzLCBhbmQgY29sb3JzLgoKKipQcmFjdGljZToqKgotIFZpc3VhbGl6ZSBDRDQgdnMgQ0Q4IHByb3BvcnRpb25zLgotIEFkZCBjb2xvcnMgYW5kIHRoZW1lcy4KCjx3aW1yPgoKIyMgKipTZXNzaW9uIDY6IEFkdmFuY2VkIFZpc3VhbGl6YXRpb24gd2l0aCBgZ2dwbG90MmAg4oCTIFBhcnQgMioqCioqR29hbDoqKiBMZWFybiBhZHZhbmNlZCB2aXN1YWxpemF0aW9uIHRlY2huaXF1ZXMuCgotIEZhY2V0aW5nIGFuZCBzbWFsbCBtdWx0aXBsZXMuCi0gQ29tYmluaW5nIHBsb3RzIChncmlkIGxheW91dHMpLgotIFNhdmluZyBoaWdoLXJlc29sdXRpb24gcGxvdHMuCgoqKlByYWN0aWNlOioqCi0gQ3JlYXRlIGZhY2V0ZWQgYm94cGxvdHMgZm9yIHN1YnNldHMuCi0gRXhwb3J0IHBsb3RzIGZvciByZXBvcnRzLgoKPHdpbXI+CgojIyAqKlNlc3Npb24gNzogU3RhdGlzdGljYWwgQW5hbHlzaXMqKgoqKkdvYWw6KiogVW5kZXJzdGFuZCBkZXNjcmlwdGl2ZSBhbmQgaW5mZXJlbnRpYWwgc3RhdGlzdGljcy4KCi0gRGVzY3JpcHRpdmUgc3RhdGlzdGljczogbWVhbiwgbWVkaWFuLCBtb2RlLgotIEh5cG90aGVzaXMgdGVzdGluZyAodC10ZXN0cywgQU5PVkEpLgotIENvcnJlbGF0aW9uIGFuZCByZWdyZXNzaW9uLgoKKipQcmFjdGljZToqKgotIFRlc3QgZGlmZmVyZW5jZXMgaW4gQ0Q0IHByb3BvcnRpb25zLgotIFBlcmZvcm0gY29ycmVsYXRpb24gYW5hbHlzaXMuCgo8d2ltcj4KCiMjICoqU2Vzc2lvbiA4OiBSZXByb2R1Y2libGUgUmVwb3J0cyB3aXRoIFJNYXJrZG93bioqCioqR29hbDoqKiBCdWlsZCBkeW5hbWljIGFuZCBzaGFyZWFibGUgcmVwb3J0cy4KCi0gSW50cm9kdWN0aW9uIHRvIFJNYXJrZG93bi4KLSBDb21iaW5pbmcgdGV4dCwgY29kZSwgYW5kIHZpc3VhbHMuCi0gRXhwb3J0aW5nIHRvIFBERiBhbmQgSFRNTC4KCioqUHJhY3RpY2U6KioKLSBDcmVhdGUgYSByZXBvcnQgc3VtbWFyaXppbmcgZmxvdyBjeXRvbWV0cnkgZGF0YS4KLSBFbWJlZCB2aXN1YWxpemF0aW9ucyBhbmQgdGFibGVzLgoKPHdpbXI+CgojIyAqKlNlc3Npb24gOTogTWluaSBQcm9qZWN0IOKAkyBQdXR0aW5nIEl0IEFsbCBUb2dldGhlcioqCioqR29hbDoqKiBBcHBseSBza2lsbHMgdG8gYSBjb21wbGV0ZSB3b3JrZmxvdy4KCioqUHJhY3RpY2U6KioKLSBMb2FkIGFuZCBjbGVhbiBkYXRhLgotIFN1bW1hcml6ZSBhbmQgdmlzdWFsaXplIHRyZW5kcy4KLSBSdW4gdGVzdHMgYW5kIGNvbXBpbGUgZXZlcnl0aGluZyBpbnRvIGEgcmVwb3J0LgoKPHdpbXI+CgojIyAqKlNlc3Npb24gMTA6IFRyb3VibGVzaG9vdGluZyBhbmQgV29ya2Zsb3cgRGVzaWduKioKKipHb2FsOioqIFRlYWNoIGRlYnVnZ2luZyBzdHJhdGVnaWVzIGFuZCB3b3JrZmxvdyBvcHRpbWl6YXRpb24uCgotIERlYnVnZ2luZyBlcnJvcnMgYW5kIHdhcm5pbmdzLgotIFdyaXRpbmcgbW9kdWxhciBzY3JpcHRzIChmdW5jdGlvbnMpLgotIE9yZ2FuaXppbmcgbGFyZ2VyIHByb2plY3RzLgotIEJyaWVmIGludHJvIHRvIEdpdC9HaXRIdWIgZm9yIHZlcnNpb24gY29udHJvbC4KCioqUHJhY3RpY2U6KioKLSBEZWJ1ZyBhIHNjcmlwdCB3aXRoIGVycm9ycy4KLSBSZXN0cnVjdHVyZSBjb2RlIGZvciByZXVzYWJpbGl0eS4KCjx3aW1yPgoKCg==