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==