https://github.com/annakrystalli/rclean
Isolate essential code to re-produce specific results.
Science Score: 10.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
○codemeta.json file
-
○.zenodo.json file
-
○DOI references
-
✓Academic publication links
Links to: joss.theoj.org, zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (21.3%) to scientific vocabulary
Last synced: 10 months ago
·
JSON representation
Repository
Isolate essential code to re-produce specific results.
Basic Info
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Fork of ropensci-archive/Rclean
Created over 6 years ago
· Last pushed over 6 years ago
https://github.com/annakrystalli/Rclean/blob/master/
[](https://travis-ci.org/ROpenSci/Rclean)
[](https://codecov.io/github/ROpenSci/Rclean?branch=master)
[](https://cran.r-project.org/package=Rclean)


[](http://www.rdocumentation.org/packages/Rclean)
[](http://www.repostatus.org/#active)
[](https://www.tidyverse.org/lifecycle/#maturing)
[](https://github.com/ropensci/software-review/issues/327)
[](http://joss.theoj.org/papers/334d80d5508056dc6e7e17c6fd3ed5a6)
[](https://zenodo.org/badge/latestdoi/102645585)
Quick Start Guide
=================
- [Rclean](https://github.com/MKLau/Rclean) was created to help
scientists more *easily* write cleaner code.
- Written with research scientists that are results oriented in mind,
the packages primary function provides a simple way to isolate the
minimal code you need to produce a specific result, such as a
statistical table or a figure. By focusing on specific results (aka.
variables), large and/or complicated analytical scripts can be
paired down to the essentials and easily re-factored to be more
robust and easily shared.
- Below, you'll find a brief introduction to get you started using
the package. For more details, see `vignette("Rclean")`.
Install
=======
You can install the most up to date version easily with
[devtools](https://github.com/hadley/devtools):
install.packages("devtools")
devtools::install_github("MKLau/Rclean")
You will also likely need to install the
[RGraphViz](bioconductor.org/packages/release/bioc/html/Rgraphviz.html):
install.packages("BiocManager")
BiocManager::install("Rgraphviz")
Once installed, per usual R practice just load the *Rclean* package
with:
library(Rclean)
Usage
=====
*Rclean* usage is simple. Have a script with code you want to clean
saved to disk. Then, just run the `clean` function with the path to the
script as the input. Here, we can use an example script that is included
with the package:
script <- system.file("example", "simple_script.R", package = "Rclean")
Here's a quick look at the code:
readLines(script)
#> [1] "## Make a data frame"
#> [2] "mat <- matrix(rnorm(400), nrow = 100)"
#> [3] "dat <- as.data.frame(mat)"
#> [4] "dat[, \"V2\"] <- dat[, \"V2\"] + runif(nrow(dat))"
#> [5] "dat[, \"V5\"] <- gl(10, 10)"
#> [6] "## Conduct some analyses"
#> [7] "fit12 <- lm(V1 ~ V2, data = dat)"
#> [8] "fit13 <- lm(V1 ~ V3, data = dat)"
#> [9] "fit14 <- lm(V1 ~ V4, data = dat)"
#> [10] "fit15.aov <- aov(V1 ~ V2 + V5, data = dat)"
#> [11] "## Summarize analyses"
#> [12] "summary(fit15.aov)"
#> [13] "tab.12 <- summary(fit12)"
#> [14] "tab.13 <- summary(fit13)"
#> [15] "tab.14 <- summary(fit14)"
#> [16] "tab.15 <- append(fit15.aov, tab.14)"
#> [17] "## Conduct a calculation"
#> [18] "dat <- 25 + 2"
#> [19] "dat[2] <- 10"
#> [20] "out <- dat * 2"
You can get a list of the variables found in an object with `get_vars`.
get_vars(script)
#> [1] "mat" "dat" "fit12" "fit13" "fit14" "fit15.aov"
#> [7] "tab.12" "tab.13" "tab.14" "tab.15" "out"
Sometimes for more complicated scripts, it can be helpful to see a
network graph showing the interdependencies of variables. `code_graph`
will produce a network diagram showing which lines of code produce or
use which variables:
code_graph(script)
Now, we can pick the result we want to focus on for cleaning:
clean(script, "tab.15")
#> mat <- matrix(rnorm(400), nrow = 100)
#> dat <- as.data.frame(mat)
#> dat[, "V2"] <- dat[, "V2"] + runif(nrow(dat))
#> dat[, "V5"] <- gl(10, 10)
#> fit14 <- lm(V1 ~ V4, data = dat)
#> fit15.aov <- aov(V1 ~ V2 + V5, data = dat)
#> tab.14 <- summary(fit14)
#> tab.15 <- append(fit15.aov, tab.14)
#> dat <- 25 + 2
#> dat[2] <- 10
We can also select several variables at the same time:
my.vars <- c("tab.12", "tab.15")
clean(script, my.vars)
#> mat <- matrix(rnorm(400), nrow = 100)
#> dat <- as.data.frame(mat)
#> dat[, "V2"] <- dat[, "V2"] + runif(nrow(dat))
#> dat[, "V5"] <- gl(10, 10)
#> fit12 <- lm(V1 ~ V2, data = dat)
#> fit14 <- lm(V1 ~ V4, data = dat)
#> fit15.aov <- aov(V1 ~ V2 + V5, data = dat)
#> tab.12 <- summary(fit12)
#> tab.14 <- summary(fit14)
#> tab.15 <- append(fit15.aov, tab.14)
#> dat <- 25 + 2
#> dat[2] <- 10
While just taking a look at the simplified code can be very helpful, you
can also save the code for later use or sharing (e.g. creating a
reproducible example for getting help) with `keep`:
my.code <- clean(script, my.vars)
keep(my.code, file = "results_tables.R")
If you would like to copy your code to your clipboard, you can do that
by not specifying a file path. You can now paste the simplified as
needed.
keep(my.code)
Contributing
============
This is an open-source project. If you would like to contribute to the
project, please check out [CONTRIBUTING.md](CONTRIBUTING.md).
Please note that the 'Rclean' project is released with a [Contributor
Code of Conduct](CODE_OF_CONDUCT.md). By contributing to this project,
you agree to abide by its terms.

Owner
- Name: Anna Krystalli
- Login: annakrystalli
- Kind: user
- Location: Syros, Greece
- Company: @r-rse
- Website: https://www.r-rse.eu
- Twitter: annakrystalli
- Repositories: 240
- Profile: https://github.com/annakrystalli
Research Software Engineering Service in #rstats at @r-rse. Ex @RSE-Sheffield. Editor @ropensci. Core team member @reprohack. Available for hire! 🚀😎