Overview
Submit a public GitHub repository URL containing an R package for your chosen project.
The README should include installation instructions, quick-start examples for usage of the package and CLI, and a link to the pkgdown site.
Initial Due Date: Monday, April 20th - 11:59 PM
Generally, you should be able to complete most of this assignment during the unit 1 lab sessions.
There will be a review/help session on the Monday it is due for hands-on help from instructors.
Re-Submission Policy
- Initial submission deadline: Monday, April 20th at 11:59 PM
- Initial instructor feedback by: Tuesday, April 21st at 11:59 PM
- Re-submission deadline: Friday, April 24th at 11:59 PM (4 days after initial submission)
Note: Grading will only be performed on your final submission. If you do not re-submit, your initial submission will be graded. Use the instructor feedback to address any issues before the re-submission deadline.
1. Package Structure & Installation (5 pts)
| Points | Criterion | Check |
|---|---|---|
| 1 | Valid DESCRIPTION with correct metadata, Imports, and
Suggests |
devtools::check() has 0 errors |
| 1 |
NAMESPACE is generated by roxygen2 with correct
exports/imports |
Exported functions are accessible after library()
|
| 1 | Package installs from GitHub in a clean R session |
remotes::install_github("user/repo") succeeds |
| 1 | Includes example data (.rda in data/)
usable via data() with a reproducible
data-raw/ script |
data(example_se) or data(example_sce)
works |
| 1 |
devtools::check() completes with 0 errors |
devtools::check() — 0 errors |
Note: Warnings and notes from
devtools::check()should be minimized where possible, but they will not dock points. Only errors will result in lost points.
Checklist:
2. Core Analysis Functions (7 pts)
| Points | Criterion | Check |
|---|---|---|
| 1 | Functions accept SE or SCE input and return well structured output (SE/SCE, list, data.frame) | Input validation with informative errors |
| 1 | Plotting function returns a meaningful plot | Returns ggplot object with informative labels |
| 1 | Functions are modular and composable (not one monolithic function) | Each function performs a single logical step; can be used independently |
| 1 | Results are comparable to the original analysis | Same data with same parameters produces comparable results (slight variation is expected for non-deterministic algorithms) |
| 1 | Improper parameter values produce informative error messages | Graceful stop() with informative message if user feeds
invalid input |
| 1 | An export/save function writes results to disk (e.g. CSV, TSV, or plot files) | Function produces output files from analysis results |
| 1 | Functions chain together in a meaningful pipeline (e.g. filter → analyze → plot) | Composability is demonstrated in examples or vignette |
Checklist:
3. Testing (4 pts)
| Points | Criterion | Check |
|---|---|---|
| 1 | testthat infrastructure set up correctly |
tests/testthat.R + tests/testthat/
exist |
| 1 | Tests cover both “happy path” and error cases | At least 1 expect_error() for invalid input |
| 1 | All tests pass |
devtools::test() — 0 failures |
| 1 | Tests are meaningful — they verify what the code should do, not just that it runs without error | Tests check expected output values, dimensions, types, or error conditions |
Note: We recommend that most exported functions have at least one test, but meaningful tests are more important than test count. A small number of thoughtful tests that verify correctness is preferred over many trivial assertions.
Checklist:
4. Documentation (5 pts)
| Points | Criterion | Check |
|---|---|---|
| 1 | All exported functions have roxygen2 documentation |
?function_name shows help for every export |
| 1 | All @param, @return,
@importFrom, and @export tags present |
No “Undocumented arguments” warnings |
| 1 | README with installation instructions and quick-start example | README renders on GitHub with working example |
| 1 | At least one vignette |
vignettes/ contains at least one .Rmd with usage
examples that renders properly |
| 1 | pkgdown site deployed successfully |
pkgdown::build_site() completes without error |
Checklist:
5. Command-Line Interface (4 pts)
| Points | Criterion | Check |
|---|---|---|
| 1 | CLI script exists in exec/
|
Rapp app file present and functional |
| 1 | Exported launcher installer function
(e.g. install_mypkg_cli()) that wraps
Rapp::install_pkg_cli_apps()
|
After mypkg::install_mypkg_cli(), the CLI is available
on PATH
|
| 1 |
--help displays usage information |
Shows arguments, descriptions, and defaults |
| 1 | CLI produces output files and calls package core functions | output files created; uses package functions internally |
Checklist: