chronicler is now available on CRAN
I am very happy to annouce that the {chronicler}
package, which I’ve been working on for the past 3 months has been released on CRAN. Install it with:
install.packages("chronicler")
{chronicler}
allows you to create objects that carry a log with them. Here is an example of an object that has been created using {chronicler}
, and saved using saveRDS()
(which we now load back into our session using readRDS()
):
library(chronicler)
my_df <- readRDS("path/to/my_df.rds")
Printing my_df
shows the following output:
my_df
## OK! Value computed successfully:
## ---------------
## Just
## # A tibble: 9 × 3
## # Groups: species [9]
## species sex mass
## <chr> <chr> <dbl>
## 1 Clawdite female 55
## 2 Droid none 69.8
## 3 Human female 56.3
## 4 Hutt hermaphroditic 1358
## 5 Kaminoan female NaN
## 6 Mirialan female 53.1
## 7 Tholothian female 50
## 8 Togruta female 57
## 9 Twi'lek female 55
##
## ---------------
## This is an object of type `chronicle`.
## Retrieve the value of this object with pick(.c, "value").
## To read the log of this object, call read_log(.c).
my_df
is made up of two parts, one is a data set, and the other is the log. If you wish to know how this data set was created, you can call read_log(my_df)
(this function will be renamed to read.log()
in the next release, to avoid clashing with readr::read_log()
):
read_log(my_df)
## [1] "Complete log:"
## [2] "OK! select(height,mass,species,sex) ran successfully at 2022-05-18 10:56:52"
## [3] "OK! group_by(species,sex) ran successfully at 2022-05-18 10:56:52"
## [4] "OK! filter(sex != \"male\") ran successfully at 2022-05-18 10:56:52"
## [5] "OK! summarise(mean(mass, na.rm = TRUE)) ran successfully at 2022-05-18 10:56:52"
## [6] "Total running time: 0.185953617095947 secs"
if you want to get the dataset out of the {chronicler}
“box”, you can do so with pick(my_df, “value”)
:
pick(my_df, "value")
## # A tibble: 9 × 3
## # Groups: species [9]
## species sex mass
## <chr> <chr> <dbl>
## 1 Clawdite female 55
## 2 Droid none 69.8
## 3 Human female 56.3
## 4 Hutt hermaphroditic 1358
## 5 Kaminoan female NaN
## 6 Mirialan female 53.1
## 7 Tholothian female 50
## 8 Togruta female 57
## 9 Twi'lek female 55
To know more about all the package has to offer, read the readme and the vignettes on the package’s website. I’m already working on the next release, where I plan to add the following features:
-
Rename
read_log()
toread.log()
-
Make
{chronicler}
work with{ggplot2}
(as described here) -
Introduce functions to save
{chronicler}
objects as.csv
or.xlsx
files to disk (if the underlying value is adata.frame
, as in the example above) - Anything else I think of between now and then!
I’m really looking forward to see how people are going to use this package for their work, personally I’ve been mixing {chronicler}
with {targets}
to build very robust pipelines to build chronicle
objects!
Thanks
I’d like to thank armcn, Kupac for their blog posts (here) and packages (maybe) which inspired me to build this package. Thank you as well to TimTeaFan for his help with writing the %>=%
infix operator, nigrahamuk for showing me a nice way to catch errors, and finally Mwavu for pointing me towards the right direction with an issue I’ve had as I started working on this package. Thanks to Putosaure for designing the hex logo, and of course to every single person that makes free and open source software possible.