diff --git a/LICENSE.md b/LICENSE.md index 58285c2..d6b0941 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ # MIT License -Copyright (c) Daniel Vartanian +Copyright (c) 2024 Daniel Vartanian Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/R/_dev.R b/R/_dev.R index ef69411..c7306b9 100644 --- a/R/_dev.R +++ b/R/_dev.R @@ -49,10 +49,10 @@ # source(here::here("R", "_pre-render-revealjs.R")) # # quarto render +# quarto render --profile gfm # quarto render --profile pdf # quarto render --profile html # quarto render --profile revealjs -# quarto publish gh-pages # # LaTeX # diff --git a/R/_post-render-end.R b/R/_post-render-end.R index 8bf38d8..442f0d8 100644 --- a/R/_post-render-end.R +++ b/R/_post-render-end.R @@ -1,6 +1,8 @@ -# library(rutils, quietly = TRUE) -# library(here, quietly = TRUE) -# library(magrittr, quietly = TRUE) +# library(rutils) +# library(here) +# library(magrittr) +# library(readr) +# library(stringr) # Copy output to `docs` folder ----- @@ -64,6 +66,20 @@ for (i in seq_along(output_docs_new_files)) { ) } +# Update `LICENSE.md` year ----- + +file <- here::here("LICENSE.md") + +data <- + file |> + readr::read_lines() |> + stringr::str_replace_all( + pattern = "20\\d{2}", + replacement = as.character(Sys.Date() |> lubridate::year()) + ) + +data |> readr::write_lines(file) + # Delete unnecessary files and folders ----- dir_list <- diff --git a/R/_post-render-gfm.R b/R/_post-render-gfm.R new file mode 100644 index 0000000..e959f2d --- /dev/null +++ b/R/_post-render-gfm.R @@ -0,0 +1,11 @@ +# library(beepr) +# library(groomr) # github.com/danielvartan/groomr +# library(here) + +# Remove empty lines from `README.md` ----- + +groomr::remove_blank_line_dups(here::here("README.md")) + +# Check if the script ran successfully ----- + +# beepr::beep(1) diff --git a/R/_pre-render-begin.R b/R/_pre-render-begin.R index a7ea852..0025fde 100644 --- a/R/_pre-render-begin.R +++ b/R/_pre-render-begin.R @@ -89,9 +89,11 @@ env_vars |> yaml::write_yaml(env_vars_file_path) quarto_yml_pdf_path <- here::here("_quarto-pdf.yml") quarto_yml_pdf_vars <- yaml::read_yaml(quarto_yml_pdf_path) -# (2024-06-05) -# This function only works with BetterBibTeX (BBT) for Zotero version v6.7.140 -# or lower. +# (2024-08-25) +# This function should work with any version of BetterBibTeX (BBT) for Zotero. +# Verify if @wmoldham PR was merged in the `rbbt` package (see issue #47 +# ). If not, install `rbbt` +# from @wmoldham fork `remotes::install_github("wmoldham/rbbt")`. if (isTRUE(quarto_yml_pdf_vars$format$`abnt-pdf`$zotero)) { rutils:::bbt_write_quarto_bib( diff --git a/R/test_normality.R b/R/test_normality.R index 4fa54b1..f2d9eff 100644 --- a/R/test_normality.R +++ b/R/test_normality.R @@ -219,7 +219,7 @@ plot_hist <- function(x, checkmate::assert_flag(print) if (isTRUE(na_rm)) x <- x |> rutils:::drop_na() - y_lab <- ifelse("count", "Frequency", "Density") + y_lab <- ifelse(stat == "count", "Frequency", "Density") plot <- dplyr::tibble(y = x) |> diff --git a/R/utils-stats.R b/R/utils-stats.R index 3b4d040..b91fbfc 100644 --- a/R/utils-stats.R +++ b/R/utils-stats.R @@ -41,7 +41,12 @@ std_error <- function(x){ # library(stats, quietly = TRUE) # TODO: Move to `rutils`. -is_outlier <- function(x, method = "iqr", iqr_mult = 1.5, sd_mult = 3) { +is_outlier <- function( # Change name to `test_outlier` + x, + method = "iqr", + iqr_mult = 1.5, + sd_mult = 3 +) { checkmate::assert_numeric(x) checkmate::assert_choice(method, c("iqr", "sd")) checkmate::assert_number(iqr_mult) @@ -62,11 +67,23 @@ is_outlier <- function(x, method = "iqr", iqr_mult = 1.5, sd_mult = 3) { # library(checkmate, quietly = TRUE) # TODO: Move to `rutils`. -remove_outliers <- function(x, method = "iqr", iqr_mult = 1.5, sd_mult = 3) { +remove_outliers <- function( + x, + method = "iqr", + iqr_mult = 1.5, + sd_mult = 3 +) { checkmate::assert_numeric(x) checkmate::assert_choice(method, c("iqr", "sd")) - checkmate::assert_number(iqr_mult) - checkmate::assert_number(sd_mult) - - x[!is_outlier(x, method = method, iqr_mult = iqr_mult, sd_mult = sd_mult)] + checkmate::assert_number(iqr_mult, lower = 1) + checkmate::assert_number(sd_mult, lower = 0) + + x |> + test_outlier( + method = method, + iqr_mult = iqr_mult, + sd_mult = sd_mult + ) %>% + `!`() %>% + magrittr::extract(x, .) } diff --git a/README.md b/README.md index 1d5411a..6dd8f03 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,13 @@ - - - # mastersthesis - [![Project Status: WIP – Initial development is in progress, but there has not yet been a stable, usable release suitable for the public.](https://www.repostatus.org/badges/latest/wip.svg)](https://www.repostatus.org/#wip) [![OSF DOI](https://img.shields.io/badge/DOI-10.17605/OSF.IO/YGKTS-1284C5.svg)](https://doi.org/10.17605/OSF.IO/YGKTS) [![License: -MIT](https://img.shields.io/badge/license-MIT-green)](https://choosealicense.com/licenses/mit/) +MIT](https://img.shields.io/badge/license-MIT-green.png)](https://choosealicense.com/licenses/mit/) [![License: CC BY 4.0](https://img.shields.io/badge/License-CC_BY_4.0-lightgrey.svg)](https://creativecommons.org/licenses/by/4.0/) @@ -40,17 +36,14 @@ The analyses contained in this thesis are 100% reproducible. They were made using the [R programming language](https://www.r-project.org/) and the [Quarto](https://quarto.org/) publishing system. The [`renv`](https://rstudio.github.io/renv/) package was used to ensure -that the R environment used can be restored (see `renv.lock`). The +that the R environment used can be restored (see `renv.lock`). All the computational notebooks can be found in the `qmd` directory. It’s important to note that some restrictions apply to the availability -of the main research data, which were used under the approval of a -Research Ethics Committee (REC) linked to the [Brazilian National -Research Ethics Committee -(CONEP)](https://conselho.saude.gov.br/Web_comissoes/conep/index.html). -As a result, this data cannot be publicly shared. To run the analyses, -users must have an internet connection and request a set of access keys -from the author. +of the main research data, which contain personal and sensitive +information. As a result, this data cannot be publicly shared. To run +the analyses, users must have an internet connection and request a set +of access keys from the author. To reproduce the analyses do the following steps: @@ -65,13 +58,12 @@ If you don’t feel comfortable with R, I strongly recommend checking Hadley Wickham and Garrett Grolemund’s free and online book [R for Data Science](https://r4ds.had.co.nz/) and the Coursera course from John Hopkins University [Data Science: Foundations using -R](https://www.coursera.org/specializations/data-science-foundations-r) -(free for audit students). +R](https://www.coursera.org/specializations/data-science-foundations-r). ## License [![License: -MIT](https://img.shields.io/badge/license-MIT-green)](https://opensource.org/license/mit/) +MIT](https://img.shields.io/badge/license-MIT-green.png)](https://opensource.org/license/mit/) [![License: CC BY 4.0](https://img.shields.io/badge/License-CC_BY_4.0-lightgrey.svg)](https://creativecommons.org/licenses/by/4.0/) @@ -80,24 +72,21 @@ license](https://opensource.org/license/mit/). Documents are released under the [Creative Commons Attribution 4.0 International license](https://creativecommons.org/licenses/by/4.0/). -The main research data were used under the approval of a Research Ethics -Committee (REC) linked to the [Brazilian National Research Ethics -Committee -(CONEP)](https://conselho.saude.gov.br/Web_comissoes/conep/index.html); -therefore, it cannot be publicly shared. However, it can be provided by -the author upon reasonable request. If the intention is to use the data -for new research, the request will need approval from CONEP, which must -be made with the author’s approval and participation. +The main research data contain personal and sensitive data, hence it +cannot be publicly shared. However, the data can be provided by the +author upon reasonable request. ## Citation You can find the thesis citation below. - Vartanian, D. (2024). Is latitude associated with the regulation of circadian rhythms in humans? [Master's thesis, University of São Paulo]. https://github.com/danielvartan/mastersthesis +Vartanian, D. (2024). Is latitude associated with the regulation of +circadian rhythms in humans? \[Master’s thesis, University of São +Paulo\]. https://github.com/danielvartan/mastersthesis A BibTeX entry for LaTeX users is - @mastersthesis{vartanian_2023, + @mastersthesis{vartanian2024, title = {Is latitude associated with the regulation of circadian rhythms in humans?}, author = {Daniel Vartanian}, year = {2024}, diff --git a/README.Rmd b/README.qmd similarity index 75% rename from README.Rmd rename to README.qmd index d07968e..7779a02 100644 --- a/README.Rmd +++ b/README.qmd @@ -1,18 +1,3 @@ ---- -output: github_document ---- - - - -```{r, include = FALSE} -knitr::opts_chunk$set( - collapse = TRUE, - comment = "#>", - fig.path = "man/figures/README-", - out.width = "100%" -) -``` - # mastersthesis @@ -34,9 +19,9 @@ The assemble of this repository was inspired by Ben Marwick, Carl Boettiger & Li ## How to use -The analyses contained in this thesis are 100% reproducible. They were made using the [R programming language](https://www.r-project.org/) and the [Quarto](https://quarto.org/) publishing system. The [`renv`](https://rstudio.github.io/renv/) package was used to ensure that the R environment used can be restored (see `renv.lock`). The computational notebooks can be found in the `qmd` directory. +The analyses contained in this thesis are 100% reproducible. They were made using the [R programming language](https://www.r-project.org/) and the [Quarto](https://quarto.org/) publishing system. The [`renv`](https://rstudio.github.io/renv/) package was used to ensure that the R environment used can be restored (see `renv.lock`). All the computational notebooks can be found in the `qmd` directory. -It's important to note that some restrictions apply to the availability of the main research data, which were used under the approval of a Research Ethics Committee (REC) linked to the [Brazilian National Research Ethics Committee (CONEP)](https://conselho.saude.gov.br/Web_comissoes/conep/index.html). As a result, this data cannot be publicly shared. To run the analyses, users must have an internet connection and request a set of access keys from the author. +It's important to note that some restrictions apply to the availability of the main research data, which contain personal and sensitive information. As a result, this data cannot be publicly shared. To run the analyses, users must have an internet connection and request a set of access keys from the author. To reproduce the analyses do the following steps: @@ -45,7 +30,7 @@ To reproduce the analyses do the following steps: 3. Run [`renv::restore()`](https://rstudio.github.io/renv//reference/restore.html) to install all software dependencies. 4. Open and run the analysis in the computational notebook. -If you don't feel comfortable with R, I strongly recommend checking Hadley Wickham and Garrett Grolemund's free and online book [R for Data Science](https://r4ds.had.co.nz/) and the Coursera course from John Hopkins University [Data Science: Foundations using R](https://www.coursera.org/specializations/data-science-foundations-r) (free for audit students). +If you don't feel comfortable with R, I strongly recommend checking Hadley Wickham and Garrett Grolemund's free and online book [R for Data Science](https://r4ds.had.co.nz/) and the Coursera course from John Hopkins University [Data Science: Foundations using R](https://www.coursera.org/specializations/data-science-foundations-r). ## License @@ -55,20 +40,18 @@ MIT](https://img.shields.io/badge/license-MIT-green)](https://opensource.org/lic Code related to this repository is released under the [MIT license](https://opensource.org/license/mit/). Documents are released under the [Creative Commons Attribution 4.0 International license](https://creativecommons.org/licenses/by/4.0/). -The main research data were used under the approval of a Research Ethics Committee (REC) linked to the [Brazilian National Research Ethics Committee (CONEP)](https://conselho.saude.gov.br/Web_comissoes/conep/index.html); therefore, it cannot be publicly shared. However, it can be provided by the author upon reasonable request. If the intention is to use the data for new research, the request will need approval from CONEP, which must be made with the author's approval and participation. +The main research data contain personal and sensitive data, hence it cannot be publicly shared. However, the data can be provided by the author upon reasonable request. ## Citation You can find the thesis citation below. -``` Vartanian, D. (2024). Is latitude associated with the regulation of circadian rhythms in humans? [Master's thesis, University of São Paulo]. https://github.com/danielvartan/mastersthesis -``` A BibTeX entry for LaTeX users is ``` -@mastersthesis{vartanian_2023, +@mastersthesis{vartanian2024, title = {Is latitude associated with the regulation of circadian rhythms in humans?}, author = {Daniel Vartanian}, year = {2024}, diff --git a/_quarto-gfm.yml b/_quarto-gfm.yml new file mode 100644 index 0000000..83f680a --- /dev/null +++ b/_quarto-gfm.yml @@ -0,0 +1,6 @@ +project: + output-dir: "." + render: [README.qmd] + post-render: "R/_post-render-gfm.R" + +format: gfm diff --git a/_quarto.yml b/_quarto.yml index 559b51a..916b87f 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -6,20 +6,20 @@ execute: profile: group: - - [html, pdf, revealjs] + - [gfm, html, pdf, revealjs] default: pdf book: title: "Is latitude associated with human circadian rhythms?" author: "Daniel Vartanian" keyword: > - Chronobiology. Biological rhythms. Chronotype. Circadian phenotype. Sleep. - Complex systems. Entrainment. Latitude. MCTQ. + chronobiology. biological rhythms. chronotype. circadian phenotype. sleep. + complex systems. entrainment. latitude. mctq. language: en-us license: "Creative Commons Attribution 4.0 International (CC BY 4.0)" publisher: "University of São Paulo" publisher-place: "São Paulo, SP, Brazil" - submitted: 2023 + submitted: 2024 url: https://danielvartan.github.io/mastersthesis/ site-url: https://danielvartan.github.io/mastersthesis/ repo-url: https://github.com/danielvartan/mastersthesis/ diff --git a/qmd/appendice-chapter-4.qmd b/qmd/appendice-chapter-4.qmd index 679aeee..6c9dc8a 100644 --- a/qmd/appendice-chapter-4.qmd +++ b/qmd/appendice-chapter-4.qmd @@ -20,7 +20,7 @@ rutils:::quarto_status( ) ``` -## Data wrangling +## Data munging The data wrangling processes were performed using the [`targets`](https://github.com/ropensci/targets) R package. The full pipeline can be seen in the `_targets.R` file at the root of the [research compendium](https://github.com/danielvartan/mastersthesis). diff --git a/qmd/appendice-chapter-6.qmd b/qmd/appendice-chapter-6.qmd index ad06cfd..7ed085c 100644 --- a/qmd/appendice-chapter-6.qmd +++ b/qmd/appendice-chapter-6.qmd @@ -295,7 +295,7 @@ lubritime:::link_to_timeline(data) |> See [`targets` R package manual](https://books.ropensci.org/targets/walkthrough.html). -### Data wrangling +### Data munging ```{r} #| label: data-preparation @@ -390,6 +390,8 @@ $$ ```{r} #| code-fold: false +# recipes::step_BoxCox() + lambda <- box_cox$x[which.max(box_cox$y)] sprintf("%.50f", lambda) # Only ~16 digit precision @@ -542,15 +544,9 @@ source(here::here("R/test_normality.R")) # res_model |> olsrr::ols_plot_resid_qq() -qq_plot <- res_model |> - stats::residuals() |> - plot_qq(print = FALSE) - -hist_plot <- res_model |> +res_model |> stats::residuals() |> - plot_hist(print = FALSE) - -cowplot::plot_grid(hist_plot, qq_plot, ncol = 2, nrow = 1) + test_normality() ``` [Source: Created by the author.]{.legend} diff --git a/renv.lock b/renv.lock index 5c4a9f4..8cc4293 100644 --- a/renv.lock +++ b/renv.lock @@ -2,6 +2,26 @@ "R": { "Version": "4.4.1", "Repositories": [ + { + "Name": "BioCsoft", + "URL": "https://bioconductor.org/packages/3.19/bioc" + }, + { + "Name": "BioCann", + "URL": "https://bioconductor.org/packages/3.19/data/annotation" + }, + { + "Name": "BioCexp", + "URL": "https://bioconductor.org/packages/3.19/data/experiment" + }, + { + "Name": "BioCworkflows", + "URL": "https://bioconductor.org/packages/3.19/workflows" + }, + { + "Name": "BioCbooks", + "URL": "https://bioconductor.org/packages/3.19/books" + }, { "Name": "CRAN", "URL": "https://packagemanager.posit.co/cran/latest" @@ -21,13 +41,13 @@ }, "BiocManager": { "Package": "BiocManager", - "Version": "1.30.23", + "Version": "1.30.25", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "utils" ], - "Hash": "47e968dfe563c1b22c2e20a067ec21d5" + "Hash": "3aec5928ca10897d7a0a1205aae64627" }, "BiocVersion": { "Package": "BiocVersion", @@ -50,6 +70,16 @@ ], "Hash": "065ae649b05f1ff66bb0c793107508f5" }, + "Deriv": { + "Package": "Deriv", + "Version": "4.1.6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "methods" + ], + "Hash": "cd52c065c9e687c60c56b51f10f7bcd3" + }, "DiceDesign": { "Package": "DiceDesign", "Version": "1.10", @@ -193,14 +223,14 @@ }, "NLP": { "Package": "NLP", - "Version": "0.2-1", + "Version": "0.3-0", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "utils" ], - "Hash": "94b0a21c13933f61cf6272a192964624" + "Hash": "389135737af0889d2fe7ed47a9e5bd4e" }, "R6": { "Package": "R6", @@ -224,27 +254,27 @@ }, "Rcpp": { "Package": "Rcpp", - "Version": "1.0.12", + "Version": "1.0.13", "Source": "Repository", "Repository": "RSPM", "Requirements": [ "methods", "utils" ], - "Hash": "5ea2700d21e038ace58269ecdbeb9ec0" + "Hash": "f27411eb6d9c3dada5edd444b8416675" }, "RcppEigen": { "Package": "RcppEigen", - "Version": "0.3.4.0.0", + "Version": "0.3.4.0.2", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "Rcpp", "stats", "utils" ], - "Hash": "df49e3306f232ec28f1604e36a202847" + "Hash": "4ac8e423216b8b70cb9653d1b3f71eb9" }, "RcppProgress": { "Package": "RcppProgress", @@ -300,9 +330,9 @@ }, "SparseM": { "Package": "SparseM", - "Version": "1.83", + "Version": "1.84-2", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "graphics", @@ -310,7 +340,7 @@ "stats", "utils" ], - "Hash": "f2b9f6a10ac6bc136be10c508ee890f9" + "Hash": "e78499cbcbbca98200254bd171379165" }, "TTR": { "Package": "TTR", @@ -326,28 +356,28 @@ }, "V8": { "Package": "V8", - "Version": "4.4.2", + "Version": "5.0.1", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "Rcpp", "curl", "jsonlite", "utils" ], - "Hash": "ca98390ad1cef2a5a609597b49d3d042" + "Hash": "7f3867df00a91c63089beb85b9ef0208" }, "abind": { "Package": "abind", - "Version": "1.4-5", + "Version": "1.4-8", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "methods", "utils" ], - "Hash": "4f57884290cc75ab22f4af9e9d4ca862" + "Hash": "2288423bb0f20a457800d7fc47f6aa54" }, "apyramid": { "Package": "apyramid", @@ -428,17 +458,17 @@ }, "bit": { "Package": "bit", - "Version": "4.0.5", + "Version": "4.5.0", "Source": "Repository", "Repository": "RSPM", "Requirements": [ "R" ], - "Hash": "d242abec29412ce988848d0294b208fd" + "Hash": "5dc7b2677d65d0e874fc4aaf0e879987" }, "bit64": { "Package": "bit64", - "Version": "4.0.5", + "Version": "4.5.2", "Source": "Repository", "Repository": "RSPM", "Requirements": [ @@ -448,18 +478,18 @@ "stats", "utils" ], - "Hash": "9fe98599ca456d6552421db0d6772d8f" + "Hash": "e84984bf5f12a18628d9a02322128dfd" }, "bitops": { "Package": "bitops", - "Version": "1.0-7", + "Version": "1.0-8", "Source": "Repository", - "Repository": "RSPM", - "Hash": "b7d8d8ee39869c18d8846a184dd8a1af" + "Repository": "CRAN", + "Hash": "da69e6b6f8feebec0827205aad3fdbd8" }, "boot": { "Package": "boot", - "Version": "1.3-30", + "Version": "1.3-31", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -467,7 +497,7 @@ "graphics", "stats" ], - "Hash": "96abeed416a286d4a0f52e550b612343" + "Hash": "de2a4646c18661d6a0a08ec67f40b7ed" }, "brio": { "Package": "brio", @@ -499,30 +529,9 @@ ], "Hash": "a4652c36d1f8abfc3ddf4774f768c934" }, - "broom.helpers": { - "Package": "broom.helpers", - "Version": "1.15.0", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R", - "broom", - "cli", - "dplyr", - "labelled", - "lifecycle", - "purrr", - "rlang", - "stats", - "stringr", - "tibble", - "tidyr" - ], - "Hash": "768cae43c3da698d6b11763777301e43" - }, "bslib": { "Package": "bslib", - "Version": "0.7.0", + "Version": "0.8.0", "Source": "Repository", "Repository": "RSPM", "Requirements": [ @@ -540,7 +549,7 @@ "rlang", "sass" ], - "Hash": "8644cc53f43828f19133548195d7e59e" + "Hash": "b299c6741ca9746fb227debcb0f9fb6c" }, "cachem": { "Package": "cachem", @@ -614,7 +623,7 @@ }, "checkmate": { "Package": "checkmate", - "Version": "2.3.1", + "Version": "2.3.2", "Source": "Repository", "Repository": "RSPM", "Requirements": [ @@ -622,7 +631,7 @@ "backports", "utils" ], - "Hash": "c01cab1cb0f9125211a6fc99d540e315" + "Hash": "0e14e01ce07e7c88fd25de6d4260d26b" }, "class": { "Package": "class", @@ -676,9 +685,9 @@ }, "clock": { "Package": "clock", - "Version": "0.7.0", + "Version": "0.7.1", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "cli", @@ -688,7 +697,7 @@ "tzdb", "vctrs" ], - "Hash": "3d8a84cdf9f6f8564531c49b70f3833d" + "Hash": "3dcaebd52554438d12989e5061e15de8" }, "cluster": { "Package": "cluster", @@ -716,7 +725,7 @@ }, "colorspace": { "Package": "colorspace", - "Version": "2.1-0", + "Version": "2.1-1", "Source": "Repository", "Repository": "RSPM", "Requirements": [ @@ -726,7 +735,7 @@ "methods", "stats" ], - "Hash": "f20c47fd52fae58b4e377c37bb8c335b" + "Hash": "d954cb1c57e8d8b756165d7ba18aa55a" }, "commonmark": { "Package": "commonmark", @@ -754,13 +763,13 @@ }, "cpp11": { "Package": "cpp11", - "Version": "0.4.7", + "Version": "0.5.0", "Source": "Repository", "Repository": "RSPM", "Requirements": [ "R" ], - "Hash": "5a295d7d963cc5035284dcdbaf334f4e" + "Hash": "91570bba75d0c9d3f1040c835cee8fba" }, "crayon": { "Package": "crayon", @@ -776,9 +785,9 @@ }, "crul": { "Package": "crul", - "Version": "1.4.2", + "Version": "1.5.0", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R6", "curl", @@ -787,28 +796,28 @@ "mime", "urltools" ], - "Hash": "5685d2603020d0f879a147ba23d51292" + "Hash": "22e70c5046981d39b7bf7af74433e396" }, "curl": { "Package": "curl", - "Version": "5.2.1", + "Version": "5.2.3", "Source": "Repository", "Repository": "RSPM", "Requirements": [ "R" ], - "Hash": "411ca2c03b1ce5f548345d2fc2685f7a" + "Hash": "d91263322a58af798f6cf3b13fd56dde" }, "data.table": { "Package": "data.table", - "Version": "1.15.4", + "Version": "1.16.0", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "methods" ], - "Hash": "8ee9ac56ef633d0c7cab8b2ca87d683e" + "Hash": "fb24e05d4a91d8b1c7ff8e284bde834a" }, "desc": { "Package": "desc", @@ -838,9 +847,9 @@ }, "dials": { "Package": "dials", - "Version": "1.2.1", + "Version": "1.3.0", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "DiceDesign", "R", @@ -853,12 +862,13 @@ "purrr", "rlang", "scales", + "sfd", "tibble", "utils", "vctrs", "withr" ], - "Hash": "999e5fa12058a2bb3a8c204e637e4707" + "Hash": "f2fbe4e90fab23fc1f95bffcd3662878" }, "diffobj": { "Package": "diffobj", @@ -877,14 +887,38 @@ }, "digest": { "Package": "digest", - "Version": "0.6.36", + "Version": "0.6.37", "Source": "Repository", "Repository": "RSPM", "Requirements": [ "R", "utils" ], - "Hash": "fd6824ad91ede64151e93af67df6376b" + "Hash": "33698c4b3127fc9f506654607fb73676" + }, + "doBy": { + "Package": "doBy", + "Version": "4.6.22", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "Deriv", + "MASS", + "Matrix", + "R", + "boot", + "broom", + "cowplot", + "dplyr", + "ggplot2", + "methods", + "microbenchmark", + "modelr", + "rlang", + "tibble", + "tidyr" + ], + "Hash": "a9b56885b9596c284168df26d6179c40" }, "doFuture": { "Package": "doFuture", @@ -927,9 +961,9 @@ }, "e1071": { "Package": "e1071", - "Version": "1.7-14", + "Version": "1.7-16", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "class", "grDevices", @@ -939,18 +973,7 @@ "stats", "utils" ], - "Hash": "4ef372b716824753719a8a38b258442d" - }, - "ellipsis": { - "Package": "ellipsis", - "Version": "0.3.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "rlang" - ], - "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077" + "Hash": "27a09ca40266a1066d62ef5402dd51d6" }, "encryptr": { "Package": "encryptr", @@ -969,20 +992,19 @@ }, "evaluate": { "Package": "evaluate", - "Version": "0.24.0", + "Version": "1.0.0", "Source": "Repository", "Repository": "RSPM", "Requirements": [ - "R", - "methods" + "R" ], - "Hash": "a1066cbc05caee9a4bf6d90f194ff4da" + "Hash": "6b567375113ceb7d9f800de4dd42218e" }, "exams": { "Package": "exams", - "Version": "2.4-0", + "Version": "2.4-1", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "base64enc", @@ -994,7 +1016,7 @@ "tools", "utils" ], - "Hash": "d0aa0513ed578e10a8309493a3e5ee27" + "Hash": "25beadb9b1212325ab35885c65ccd244" }, "extrafont": { "Package": "extrafont", @@ -1022,9 +1044,9 @@ }, "fBasics": { "Package": "fBasics", - "Version": "4032.96", + "Version": "4041.97", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "MASS", "R", @@ -1039,7 +1061,7 @@ "timeSeries", "utils" ], - "Hash": "759720c72b63f5314855d42e62702918" + "Hash": "19180703bbc8e6a07c775507d418505b" }, "fansi": { "Package": "fansi", @@ -1067,6 +1089,16 @@ "Repository": "RSPM", "Hash": "aa5e1cd11c2d15497494c5292d7ffcc8" }, + "fastmatch": { + "Package": "fastmatch", + "Version": "1.1-4", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R" + ], + "Hash": "8c406b7284bbaef08e01c6687367f195" + }, "fontawesome": { "Package": "fontawesome", "Version": "0.5.2", @@ -1110,7 +1142,7 @@ }, "foreign": { "Package": "foreign", - "Version": "0.8-86", + "Version": "0.8-87", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1119,7 +1151,7 @@ "stats", "utils" ], - "Hash": "550170303dbb19d07b2bcc288068e7dc" + "Hash": "81fc09bdeab0077a73927ed1243404b6" }, "fs": { "Package": "fs", @@ -1150,9 +1182,9 @@ }, "future": { "Package": "future", - "Version": "1.33.2", + "Version": "1.34.0", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "digest", "globals", @@ -1161,7 +1193,7 @@ "parallelly", "utils" ], - "Hash": "fd7b1d69d16d0d114e4fa82db68f184c" + "Hash": "475771e3edb711591476be387c9a8c2e" }, "future.apply": { "Package": "future.apply", @@ -1224,20 +1256,20 @@ }, "geobr": { "Package": "geobr", - "Version": "1.9.0", + "Version": "1.9.1", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "curl", "data.table", "dplyr", - "httr", + "fs", "methods", "sf", "utils" ], - "Hash": "41475e69dc7ef50f37ca1df180161033" + "Hash": "2f9825a7d857f05f836b0b22141f61f2" }, "ggcorrplot": { "Package": "ggcorrplot", @@ -1279,9 +1311,9 @@ }, "ggrepel": { "Package": "ggrepel", - "Version": "0.9.5", + "Version": "0.9.6", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "Rcpp", @@ -1291,21 +1323,20 @@ "scales", "withr" ], - "Hash": "cc3361e234c4a5050e29697d675764aa" + "Hash": "3d4156850acc1161f2f24bc61c9217c1" }, "ggstats": { "Package": "ggstats", - "Version": "0.6.0", + "Version": "0.7.0", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ - "broom.helpers", + "R", "cli", "dplyr", "forcats", "ggplot2", "lifecycle", - "magrittr", "patchwork", "purrr", "rlang", @@ -1314,7 +1345,7 @@ "stringr", "tidyr" ], - "Hash": "02cdab34154e9e70dac279afbb20d34b" + "Hash": "95296256ea213cdd58601260893d0fc7" }, "globals": { "Package": "globals", @@ -1340,14 +1371,14 @@ }, "gmp": { "Package": "gmp", - "Version": "0.7-4", + "Version": "0.7-5", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "methods" ], - "Hash": "eef7063b82c79405f4eb2de9a051a312" + "Hash": "47b774de7ee40f6134cfdeab3fc85df9" }, "goftest": { "Package": "goftest", @@ -1434,6 +1465,28 @@ ], "Hash": "7d7f283939f563670a697165b2cf5560" }, + "groomr": { + "Package": "groomr", + "Version": "0.0.0.9002", + "Source": "GitHub", + "RemoteType": "github", + "RemoteHost": "api.github.com", + "RemoteRepo": "groomr", + "RemoteUsername": "danielvartan", + "RemoteSha": "9f370a65620f5adec6e2ba122f9a125a524470a6", + "Requirements": [ + "R", + "cli", + "dplyr", + "lifecycle", + "magrittr", + "prettycheck", + "readr", + "rutils", + "stringr" + ], + "Hash": "9630dcac7f7312f996e1c6f9649cb9cc" + }, "gss": { "Package": "gss", "Version": "2.2-7", @@ -1447,9 +1500,9 @@ }, "gt": { "Package": "gt", - "Version": "0.10.1", + "Version": "0.11.0", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "base64enc", @@ -1473,7 +1526,7 @@ "vctrs", "xml2" ], - "Hash": "03009c105dfae79460b8eb9d8cf791e4" + "Hash": "3470c2eb1123db6a2c54ec812de38284" }, "gtable": { "Package": "gtable", @@ -1505,27 +1558,6 @@ ], "Hash": "e7aabf81944f6c6cbbcec1f85827a279" }, - "haven": { - "Package": "haven", - "Version": "2.5.4", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R", - "cli", - "cpp11", - "forcats", - "hms", - "lifecycle", - "methods", - "readr", - "rlang", - "tibble", - "tidyselect", - "vctrs" - ], - "Hash": "9171f898db9d9c4c1b2c745adc2c1ef1" - }, "here": { "Package": "here", "Version": "1.0.1", @@ -1563,9 +1595,9 @@ }, "htmlTable": { "Package": "htmlTable", - "Version": "2.4.2", + "Version": "2.4.3", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "checkmate", @@ -1577,7 +1609,7 @@ "rstudioapi", "stringr" ], - "Hash": "0164d8cade33fac2190703da7e6e3241" + "Hash": "ca027d8771f2c039aed82f00a81e725b" }, "htmltools": { "Package": "htmltools", @@ -1649,7 +1681,7 @@ }, "hunspell": { "Package": "hunspell", - "Version": "3.0.3", + "Version": "3.0.4", "Source": "Repository", "Repository": "RSPM", "Requirements": [ @@ -1657,7 +1689,7 @@ "Rcpp", "digest" ], - "Hash": "e957e989ea17f937964f0d46b0f0bca0" + "Hash": "f543163714aba1ff9e8cfe76d8d15381" }, "ids": { "Package": "ids", @@ -1695,9 +1727,9 @@ }, "ipred": { "Package": "ipred", - "Version": "0.9-14", + "Version": "0.9-15", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "MASS", "R", @@ -1707,7 +1739,7 @@ "rpart", "survival" ], - "Hash": "b25a108cbf4834be7c1b1f46ff30f888" + "Hash": "3c3e02183ef7b9225213b531d0ce43f5" }, "isoband": { "Package": "isoband", @@ -1743,13 +1775,13 @@ }, "jsonlite": { "Package": "jsonlite", - "Version": "1.8.8", + "Version": "1.8.9", "Source": "Repository", "Repository": "RSPM", "Requirements": [ "methods" ], - "Hash": "e1b9c55281c5adc4dd113652d9e26768" + "Hash": "4e993b65c2c3ffbffce7bb3e2c6f832b" }, "juicyjuice": { "Package": "juicyjuice", @@ -1763,7 +1795,7 @@ }, "knitr": { "Package": "knitr", - "Version": "1.47", + "Version": "1.48", "Source": "Repository", "Repository": "RSPM", "Requirements": [ @@ -1775,7 +1807,7 @@ "xfun", "yaml" ], - "Hash": "7c99b2d55584b982717fcc0950378612" + "Hash": "acf380f300c721da9fde7df115a5f86f" }, "labeling": { "Package": "labeling", @@ -1788,24 +1820,6 @@ ], "Hash": "b64ec208ac5bc1852b285f665d6368b3" }, - "labelled": { - "Package": "labelled", - "Version": "2.13.0", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R", - "dplyr", - "haven", - "lifecycle", - "rlang", - "stringr", - "tidyr", - "tidyselect", - "vctrs" - ], - "Hash": "ad4b6d757624221aec6220b8c78defeb" - }, "later": { "Package": "later", "Version": "1.3.2", @@ -1866,14 +1880,14 @@ }, "lhs": { "Package": "lhs", - "Version": "1.1.6", + "Version": "1.2.0", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "Rcpp" ], - "Hash": "a007ff66aa9d478e220bf0493a7b1d95" + "Hash": "6d18e58d3d1de31b6e5415c1fe291113" }, "lifecycle": { "Package": "lifecycle", @@ -1900,9 +1914,9 @@ }, "lme4": { "Package": "lme4", - "Version": "1.1-35.4", + "Version": "1.1-35.5", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "MASS", "Matrix", @@ -1922,19 +1936,17 @@ "stats", "utils" ], - "Hash": "a6f5390caceaa1b23b68f57d663b2061" + "Hash": "16a08fc75007da0d08e0c0388c7c33e6" }, "lockr": { "Package": "lockr", "Version": "0.3.0.9000", "Source": "GitHub", - "Remotes": "github::danielvartan/rutils", "RemoteType": "github", "RemoteHost": "api.github.com", "RemoteRepo": "lockr", "RemoteUsername": "danielvartan", - "RemoteRef": "HEAD", - "RemoteSha": "71d0d5025227c820b57fce66bf1a9964065e9253", + "RemoteSha": "4b8184a59f572e5cea01aa77706f03e940d72423", "Requirements": [ "R", "checkmate", @@ -1944,7 +1956,7 @@ "openssl", "rutils" ], - "Hash": "b66da6778df6fc9c0ee931021e2e24ee" + "Hash": "cc5514a0ecc5037ea80e856ec3bd6efb" }, "lubridate": { "Package": "lubridate", @@ -1963,13 +1975,11 @@ "Package": "lubritime", "Version": "0.0.0.9000", "Source": "GitHub", - "Remotes": "github::danielvartan/rutils", "RemoteType": "github", "RemoteHost": "api.github.com", "RemoteRepo": "lubritime", "RemoteUsername": "danielvartan", - "RemoteRef": "HEAD", - "RemoteSha": "766b0ec48a4ed047a4bcf195c8d183b822661d31", + "RemoteSha": "c7dfecd9e294132c101056825baa23e197ab64eb", "Requirements": [ "R", "checkmate", @@ -1980,7 +1990,7 @@ "lubridate", "rutils" ], - "Hash": "64cf4d93848e1d0cd57dc0536440eb84" + "Hash": "768ced35a215685ec529ee610c779edc" }, "magrittr": { "Package": "magrittr", @@ -2057,6 +2067,18 @@ ], "Hash": "110ee9d83b496279960e162ac97764ce" }, + "microbenchmark": { + "Package": "microbenchmark", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "graphics", + "stats" + ], + "Hash": "f9d226d88d4087d817d4e616626ce8e5" + }, "mime": { "Package": "mime", "Version": "0.12", @@ -2069,13 +2091,13 @@ }, "minqa": { "Package": "minqa", - "Version": "1.2.7", + "Version": "1.2.8", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "Rcpp" ], - "Hash": "aba060ef3c097b26a4d304ea39d87f32" + "Hash": "785ef8e22389d4a7634c6c944f2dc07d" }, "modelenv": { "Package": "modelenv", @@ -2090,6 +2112,24 @@ ], "Hash": "fc2e59a68030885555c7be34ee7765a1" }, + "modelr": { + "Package": "modelr", + "Version": "0.1.11", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "broom", + "magrittr", + "purrr", + "rlang", + "tibble", + "tidyr", + "tidyselect", + "vctrs" + ], + "Hash": "4f50122dc256b1b6996a4703fecea821" + }, "moments": { "Package": "moments", "Version": "0.14.1", @@ -2110,7 +2150,7 @@ }, "nlme": { "Package": "nlme", - "Version": "3.1-165", + "Version": "3.1-166", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -2120,14 +2160,14 @@ "stats", "utils" ], - "Hash": "2769a88be217841b1f33ed469675c3cc" + "Hash": "ccbb8846be320b627e6aa2b4616a2ded" }, "nloptr": { "Package": "nloptr", - "Version": "2.1.0", + "Version": "2.1.1", "Source": "Repository", - "Repository": "RSPM", - "Hash": "2f436f0a4e224ae7542c68f1896a00d9" + "Repository": "CRAN", + "Hash": "27550641889a3abf3aec4d91186311ec" }, "nnet": { "Package": "nnet", @@ -2182,13 +2222,13 @@ }, "openssl": { "Package": "openssl", - "Version": "2.2.0", + "Version": "2.2.2", "Source": "Repository", "Repository": "RSPM", "Requirements": [ "askpass" ], - "Hash": "2bcca3848e4734eb3b16103bc9aa4b8e" + "Hash": "d413e0fef796c9401a4419485f709ca1" }, "osfr": { "Package": "osfr", @@ -2223,15 +2263,15 @@ }, "parallelly": { "Package": "parallelly", - "Version": "1.37.1", + "Version": "1.38.0", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "parallel", "tools", "utils" ], - "Hash": "5410df8d22bd36e616f2a2343dbb328c" + "Hash": "6e8b139c1904f5e9e14c69db64453bbe" }, "parsnip": { "Package": "parsnip", @@ -2264,11 +2304,12 @@ }, "patchwork": { "Package": "patchwork", - "Version": "1.2.0", + "Version": "1.3.0", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "cli", + "farver", "ggplot2", "grDevices", "graphics", @@ -2278,25 +2319,25 @@ "stats", "utils" ], - "Hash": "9c8ab14c00ac07e9e04d1664c0b74486" + "Hash": "e23fb9ecb1258207bcb763d78d513439" }, "pbkrtest": { "Package": "pbkrtest", - "Version": "0.5.2", + "Version": "0.5.3", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "MASS", "Matrix", "R", "broom", + "doBy", "dplyr", "lme4", "methods", - "numDeriv", - "parallel" + "numDeriv" ], - "Hash": "3b5b99f4d3f067bb9c1d59317d071370" + "Hash": "938e6bbc4ac57534f8b43224506a8966" }, "pillar": { "Package": "pillar", @@ -2342,24 +2383,25 @@ }, "pkgload": { "Package": "pkgload", - "Version": "1.3.4", + "Version": "1.4.0", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "cli", - "crayon", "desc", "fs", "glue", + "lifecycle", "methods", "pkgbuild", + "processx", "rlang", "rprojroot", "utils", "withr" ], - "Hash": "876c618df5ae610be84356d5d7a5d124" + "Hash": "2ec30ffbeec83da57655b850cf2d3e0e" }, "plyr": { "Package": "plyr", @@ -2389,6 +2431,35 @@ "Repository": "RSPM", "Hash": "a555924add98c99d2f411e37e7d25e9f" }, + "prettycheck": { + "Package": "prettycheck", + "Version": "0.0.0.9000", + "Source": "GitHub", + "RemoteType": "github", + "RemoteHost": "api.github.com", + "RemoteRepo": "prettycheck", + "RemoteUsername": "danielvartan", + "RemoteSha": "fa0955800574a18a540c5517ee1f51e1657ad6b7", + "Requirements": [ + "R", + "checkmate", + "cli", + "curl", + "data.table", + "fastmatch", + "glue", + "hms", + "lifecycle", + "lubridate", + "magrittr", + "rlang", + "rutils", + "stringr", + "tibble", + "utils" + ], + "Hash": "d4d7f3c42e8a26844dab4ad87e1497ae" + }, "prettyunits": { "Package": "prettyunits", "Version": "1.2.0", @@ -2414,9 +2485,9 @@ }, "prodlim": { "Package": "prodlim", - "Version": "2023.08.28", + "Version": "2024.06.25", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "KernSmooth", "R", @@ -2429,7 +2500,7 @@ "stats", "survival" ], - "Hash": "c73e09a2039a0f75ac0a1e5454b39993" + "Hash": "d1e73a231e9442c29e21876f303382fc" }, "progress": { "Package": "progress", @@ -2487,14 +2558,14 @@ }, "ps": { "Package": "ps", - "Version": "1.7.6", + "Version": "1.8.0", "Source": "Repository", "Repository": "RSPM", "Requirements": [ "R", "utils" ], - "Hash": "dd2b9319ee0656c8acf45c7f40c59de7" + "Hash": "4b9c8485b0c7eecdf0a9ba5132a45576" }, "purrr": { "Package": "purrr", @@ -2569,7 +2640,7 @@ }, "quarto": { "Package": "quarto", - "Version": "1.4", + "Version": "1.4.4", "Source": "Repository", "Repository": "RSPM", "Requirements": [ @@ -2585,7 +2656,7 @@ "utils", "yaml" ], - "Hash": "c94c271f9b998d116186a78b2a9b23c1" + "Hash": "af456d7a181750812bd8b2bfedb3ea4e" }, "rappdirs": { "Package": "rappdirs", @@ -2604,9 +2675,8 @@ "RemoteType": "github", "RemoteHost": "api.github.com", "RemoteRepo": "rbbt", - "RemoteUsername": "paleolimbot", - "RemoteRef": "HEAD", - "RemoteSha": "ec1ebe1e9b7e60bc4523e6cb2ca47f73a9cbfba3", + "RemoteUsername": "wmoldham", + "RemoteSha": "8d64efcf46468c9388580d037530b58434592196", "Requirements": [ "R", "clipr", @@ -2618,17 +2688,17 @@ "rstudioapi", "stringr" ], - "Hash": "b849bb071583cfbaaa054cf6864ce351" + "Hash": "f860405e3af3f81329a357c4c11312ae" }, "reactR": { "Package": "reactR", - "Version": "0.5.0", + "Version": "0.6.1", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "htmltools" ], - "Hash": "c9014fd1a435b2d790dd506589cb24e5" + "Hash": "b8e3d93f508045812f47136c7c44c251" }, "reactable": { "Package": "reactable", @@ -2670,16 +2740,15 @@ }, "recipes": { "Package": "recipes", - "Version": "1.0.10", + "Version": "1.1.0", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "Matrix", "R", "cli", "clock", "dplyr", - "ellipsis", "generics", "glue", "gower", @@ -2699,7 +2768,7 @@ "vctrs", "withr" ], - "Hash": "69783cdd607c58fffb21c5c26c6ededf" + "Hash": "fc6672e55fcd1b5c461a3529ff6b1b08" }, "rematch": { "Package": "rematch", @@ -2720,13 +2789,13 @@ }, "renv": { "Package": "renv", - "Version": "1.0.3", + "Version": "1.0.9", "Source": "Repository", - "Repository": "CRAN", + "Repository": "RSPM", "Requirements": [ "utils" ], - "Hash": "41b847654f567341725473431dd0d5ab" + "Hash": "ef233f0e9064fc88c898b340c9add5c2" }, "reshape2": { "Package": "reshape2", @@ -2743,9 +2812,9 @@ }, "reticulate": { "Package": "reticulate", - "Version": "1.38.0", + "Version": "1.39.0", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "Matrix", "R", @@ -2761,17 +2830,17 @@ "utils", "withr" ], - "Hash": "8810e64cfe0240afe926617a854a38a4" + "Hash": "e1a5d04397edc1580c5e0ed1dbdccf76" }, "rjson": { "Package": "rjson", - "Version": "0.2.21", + "Version": "0.2.23", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "f9da75e6444e95a1baf8ca24909d63b9" + "Hash": "7a04e9eff95857dbf557b4e5f0b3d1a8" }, "rlang": { "Package": "rlang", @@ -2786,7 +2855,7 @@ }, "rmarkdown": { "Package": "rmarkdown", - "Version": "2.27", + "Version": "2.28", "Source": "Repository", "Repository": "RSPM", "Requirements": [ @@ -2805,7 +2874,7 @@ "xfun", "yaml" ], - "Hash": "27f9502e1cdbfa195f94e03b0f517484" + "Hash": "062470668513dcda416927085ee9bdc7" }, "rpart": { "Package": "rpart", @@ -2866,13 +2935,11 @@ "Package": "rutils", "Version": "0.0.0.9000", "Source": "GitHub", - "Remotes": "github::paleolimbot/rbbt", "RemoteType": "github", "RemoteHost": "api.github.com", "RemoteRepo": "rutils", "RemoteUsername": "danielvartan", - "RemoteRef": "HEAD", - "RemoteSha": "a0a872ddd1f61ab6541a613b9a2e533896414a11", + "RemoteSha": "13af8b54e961cbdbffc7778dbb5f221af80565a4", "Requirements": [ "R", "checkmate", @@ -2897,7 +2964,7 @@ "stringr", "yaml" ], - "Hash": "55663f4ba5973206b9d89591f9159170" + "Hash": "1b5deca64d05ca81efd288cbc6c1f7a1" }, "rvest": { "Package": "rvest", @@ -2920,15 +2987,15 @@ }, "s2": { "Package": "s2", - "Version": "1.1.6", + "Version": "1.1.7", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "Rcpp", "wk" ], - "Hash": "32f7b1a15bb01ae809022960abad5363" + "Hash": "3c8013cdd7f1d20de5762e3f97e5e274" }, "sass": { "Package": "sass", @@ -2948,13 +3015,11 @@ "Package": "scaler", "Version": "0.0.0.9000", "Source": "GitHub", - "Remotes": "github::danielvartan/rutils, github::danielvartan/lubritime", "RemoteType": "github", "RemoteHost": "api.github.com", "RemoteRepo": "scaler", "RemoteUsername": "danielvartan", - "RemoteRef": "HEAD", - "RemoteSha": "0ff433cf15f9112e259cb9e83db6c38148055abd", + "RemoteSha": "817d7677c70f03cbbb4ad5d7b80edf2db2addea5", "Requirements": [ "R", "checkmate", @@ -2969,7 +3034,7 @@ "rutils", "tidyr" ], - "Hash": "b75c48c59ef44f0050d28c0032645f05" + "Hash": "4a5a8a2c399a9a48f56f1ca4c02bd0c9" }, "scales": { "Package": "scales", @@ -2993,13 +3058,13 @@ }, "secretbase": { "Package": "secretbase", - "Version": "1.0.0", + "Version": "1.0.2", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "ac4ce0d0f56d126e63e7f01013f59ce2" + "Hash": "02cf6443f61f1521def1ef3d6ce3638c" }, "selectr": { "Package": "selectr", @@ -3016,9 +3081,9 @@ }, "sf": { "Package": "sf", - "Version": "1.0-16", + "Version": "1.0-17", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "DBI", "R", @@ -3035,7 +3100,20 @@ "units", "utils" ], - "Hash": "ad57b543f7c3fca05213ba78ff63df9b" + "Hash": "453a7d0263eae87a7831242a74fe9b60" + }, + "sfd": { + "Package": "sfd", + "Version": "0.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "rlang", + "tibble" + ], + "Hash": "8798f23058ead1d2ffd1223dfc0c8906" }, "shape": { "Package": "shape", @@ -3052,9 +3130,9 @@ }, "shiny": { "Package": "shiny", - "Version": "1.8.1.1", + "Version": "1.9.1", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "R6", @@ -3081,7 +3159,7 @@ "withr", "xtable" ], - "Hash": "54b26646816af9960a4c64d8ceec75d6" + "Hash": "6a293995a66e12c48d13aa1f957d09c7" }, "sidrar": { "Package": "sidrar", @@ -3151,14 +3229,14 @@ }, "stabledist": { "Package": "stabledist", - "Version": "0.7-1", + "Version": "0.7-2", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "stats" ], - "Hash": "dfd9740f06248fb6721d38df2e14ed7b" + "Hash": "b399e5007fe512f314d74b41fa7e4a41" }, "stringi": { "Package": "stringi", @@ -3293,9 +3371,9 @@ }, "text": { "Package": "text", - "Version": "1.2.1", + "Version": "1.2.3", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "cowplot", @@ -3319,7 +3397,7 @@ "workflows", "yardstick" ], - "Hash": "eb37d3b9fce35aaaa5017362e0a4f511" + "Hash": "78f2b4d1986e6485833a2421ab5b4925" }, "textreuse": { "Package": "textreuse", @@ -3401,9 +3479,9 @@ }, "timeDate": { "Package": "timeDate", - "Version": "4032.109", + "Version": "4041.110", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "graphics", @@ -3411,13 +3489,13 @@ "stats", "utils" ], - "Hash": "fa276a2ec2555d74b4eabf56fba3d209" + "Hash": "c5e48e8ac24d4472ddb122bcdeb011ad" }, "timeSeries": { "Package": "timeSeries", - "Version": "4032.109", + "Version": "4041.111", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "grDevices", @@ -3427,7 +3505,7 @@ "timeDate", "utils" ], - "Hash": "a6297c793d3c39d0f6bd94d8fcab2e46" + "Hash": "8c52573a9d4f1f4e63a45d00b339ef01" }, "timechange": { "Package": "timechange", @@ -3442,13 +3520,13 @@ }, "tinytex": { "Package": "tinytex", - "Version": "0.51", + "Version": "0.53", "Source": "Repository", "Repository": "RSPM", "Requirements": [ "xfun" ], - "Hash": "d44e2fcd2e4e076f0aac540208559d1d" + "Hash": "9db859e8aabbb474293dde3097839420" }, "triebeard": { "Package": "triebeard", @@ -3462,9 +3540,9 @@ }, "tseries": { "Package": "tseries", - "Version": "0.10-56", + "Version": "0.10-58", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "graphics", @@ -3475,7 +3553,7 @@ "utils", "zoo" ], - "Hash": "77d02308731e1d886e962b4e11a88346" + "Hash": "f9269495a613f8e237f01691bf789ead" }, "tune": { "Package": "tune", @@ -3558,13 +3636,13 @@ }, "uuid": { "Package": "uuid", - "Version": "1.2-0", + "Version": "1.2-1", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "303c19bfd970bece872f93a824e323d9" + "Hash": "34e965e62a41fcafb1ca60e9b142085b" }, "vctrs": { "Package": "vctrs", @@ -3631,21 +3709,20 @@ }, "waldo": { "Package": "waldo", - "Version": "0.5.2", + "Version": "0.5.3", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R", "cli", "diffobj", - "fansi", "glue", "methods", "rematch2", "rlang", "tibble" ], - "Hash": "c7d3fd6d29ab077cbac8f0e2751449e6" + "Hash": "16aa934a49658677d8041df9017329b9" }, "warp": { "Package": "warp", @@ -3659,7 +3736,7 @@ }, "withr": { "Package": "withr", - "Version": "3.0.0", + "Version": "3.0.1", "Source": "Repository", "Repository": "RSPM", "Requirements": [ @@ -3667,17 +3744,17 @@ "grDevices", "graphics" ], - "Hash": "d31b6c62c10dcf11ec530ca6b0dd5d35" + "Hash": "07909200e8bbe90426fbfeb73e1e27aa" }, "wk": { "Package": "wk", - "Version": "0.9.1", + "Version": "0.9.3", "Source": "Repository", - "Repository": "RSPM", + "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "5d4545e140e36476f35f20d0ca87963e" + "Hash": "9ca478d7cb1450b42dcb8af2ea5681cc" }, "workflows": { "Package": "workflows", @@ -3701,15 +3778,16 @@ }, "xfun": { "Package": "xfun", - "Version": "0.45", + "Version": "0.47", "Source": "Repository", "Repository": "RSPM", "Requirements": [ + "R", "grDevices", "stats", "tools" ], - "Hash": "ca59c87fe305b16a9141a5874c3a7889" + "Hash": "36ab21660e2d095fef0d83f689e0477c" }, "xml2": { "Package": "xml2", @@ -3763,10 +3841,10 @@ }, "yaml": { "Package": "yaml", - "Version": "2.3.8", + "Version": "2.3.10", "Source": "Repository", "Repository": "RSPM", - "Hash": "29240487a071f535f5e5d5a323b7afbd" + "Hash": "51dab85c6c98e50a18d7551e9d49f76c" }, "yardstick": { "Package": "yardstick", diff --git a/renv/activate.R b/renv/activate.R index cb5401f..c360bf2 100644 --- a/renv/activate.R +++ b/renv/activate.R @@ -2,11 +2,13 @@ local({ # the requested version of renv - version <- "1.0.3" + version <- "1.0.9" attr(version, "sha") <- NULL # the project directory - project <- getwd() + project <- Sys.getenv("RENV_PROJECT") + if (!nzchar(project)) + project <- getwd() # use start-up diagnostics if enabled diagnostics <- Sys.getenv("RENV_STARTUP_DIAGNOSTICS", unset = "FALSE") @@ -31,6 +33,14 @@ local({ if (!is.null(override)) return(override) + # if we're being run in a context where R_LIBS is already set, + # don't load -- presumably we're being run as a sub-process and + # the parent process has already set up library paths for us + rcmd <- Sys.getenv("R_CMD", unset = NA) + rlibs <- Sys.getenv("R_LIBS", unset = NA) + if (!is.na(rlibs) && !is.na(rcmd)) + return(FALSE) + # next, check environment variables # TODO: prefer using the configuration one in the future envvars <- c( @@ -50,9 +60,22 @@ local({ }) - if (!enabled) + # bail if we're not enabled + if (!enabled) { + + # if we're not enabled, we might still need to manually load + # the user profile here + profile <- Sys.getenv("R_PROFILE_USER", unset = "~/.Rprofile") + if (file.exists(profile)) { + cfg <- Sys.getenv("RENV_CONFIG_USER_PROFILE", unset = "TRUE") + if (tolower(cfg) %in% c("true", "t", "1")) + sys.source(profile, envir = globalenv()) + } + return(FALSE) + } + # avoid recursion if (identical(getOption("renv.autoloader.running"), TRUE)) { warning("ignoring recursive attempt to run renv autoloader") @@ -75,6 +98,66 @@ local({ unloadNamespace("renv") # load bootstrap tools + ansify <- function(text) { + if (renv_ansify_enabled()) + renv_ansify_enhanced(text) + else + renv_ansify_default(text) + } + + renv_ansify_enabled <- function() { + + override <- Sys.getenv("RENV_ANSIFY_ENABLED", unset = NA) + if (!is.na(override)) + return(as.logical(override)) + + pane <- Sys.getenv("RSTUDIO_CHILD_PROCESS_PANE", unset = NA) + if (identical(pane, "build")) + return(FALSE) + + testthat <- Sys.getenv("TESTTHAT", unset = "false") + if (tolower(testthat) %in% "true") + return(FALSE) + + iderun <- Sys.getenv("R_CLI_HAS_HYPERLINK_IDE_RUN", unset = "false") + if (tolower(iderun) %in% "false") + return(FALSE) + + TRUE + + } + + renv_ansify_default <- function(text) { + text + } + + renv_ansify_enhanced <- function(text) { + + # R help links + pattern <- "`\\?(renv::(?:[^`])+)`" + replacement <- "`\033]8;;ide:help:\\1\a?\\1\033]8;;\a`" + text <- gsub(pattern, replacement, text, perl = TRUE) + + # runnable code + pattern <- "`(renv::(?:[^`])+)`" + replacement <- "`\033]8;;ide:run:\\1\a\\1\033]8;;\a`" + text <- gsub(pattern, replacement, text, perl = TRUE) + + # return ansified text + text + + } + + renv_ansify_init <- function() { + + envir <- renv_envir_self() + if (renv_ansify_enabled()) + assign("ansify", renv_ansify_enhanced, envir = envir) + else + assign("ansify", renv_ansify_default, envir = envir) + + } + `%||%` <- function(x, y) { if (is.null(x)) y else x } @@ -108,6 +191,24 @@ local({ } + heredoc <- function(text, leave = 0) { + + # remove leading, trailing whitespace + trimmed <- gsub("^\\s*\\n|\\n\\s*$", "", text) + + # split into lines + lines <- strsplit(trimmed, "\n", fixed = TRUE)[[1L]] + + # compute common indent + indent <- regexpr("[^[:space:]]", lines) + common <- min(setdiff(indent, -1L)) - leave + text <- paste(substring(lines, common), collapse = "\n") + + # substitute in ANSI links for executable renv code + ansify(text) + + } + startswith <- function(string, prefix) { substring(string, 1, nchar(prefix)) == prefix } @@ -268,7 +369,11 @@ local({ ) if ("headers" %in% names(formals(utils::download.file))) - args$headers <- renv_bootstrap_download_custom_headers(url) + { + headers <- renv_bootstrap_download_custom_headers(url) + if (length(headers) && is.character(headers)) + args$headers <- headers + } do.call(utils::download.file, args) @@ -347,10 +452,22 @@ local({ for (type in types) { for (repos in renv_bootstrap_repos()) { + # build arguments for utils::available.packages() call + args <- list(type = type, repos = repos) + + # add custom headers if available -- note that + # utils::available.packages() will pass this to download.file() + if ("headers" %in% names(formals(utils::download.file))) + { + headers <- renv_bootstrap_download_custom_headers(url) + if (length(headers) && is.character(headers)) + args$headers <- headers + } + # retrieve package database db <- tryCatch( as.data.frame( - utils::available.packages(type = type, repos = repos), + do.call(utils::available.packages, args), stringsAsFactors = FALSE ), error = identity @@ -432,6 +549,14 @@ local({ } + renv_bootstrap_github_token <- function() { + for (envvar in c("GITHUB_TOKEN", "GITHUB_PAT", "GH_TOKEN")) { + envval <- Sys.getenv(envvar, unset = NA) + if (!is.na(envval)) + return(envval) + } + } + renv_bootstrap_download_github <- function(version) { enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") @@ -439,16 +564,16 @@ local({ return(FALSE) # prepare download options - pat <- Sys.getenv("GITHUB_PAT") - if (nzchar(Sys.which("curl")) && nzchar(pat)) { + token <- renv_bootstrap_github_token() + if (nzchar(Sys.which("curl")) && nzchar(token)) { fmt <- "--location --fail --header \"Authorization: token %s\"" - extra <- sprintf(fmt, pat) + extra <- sprintf(fmt, token) saved <- options("download.file.method", "download.file.extra") options(download.file.method = "curl", download.file.extra = extra) on.exit(do.call(base::options, saved), add = TRUE) - } else if (nzchar(Sys.which("wget")) && nzchar(pat)) { + } else if (nzchar(Sys.which("wget")) && nzchar(token)) { fmt <- "--header=\"Authorization: token %s\"" - extra <- sprintf(fmt, pat) + extra <- sprintf(fmt, token) saved <- options("download.file.method", "download.file.extra") options(download.file.method = "wget", download.file.extra = extra) on.exit(do.call(base::options, saved), add = TRUE) @@ -610,6 +735,9 @@ local({ # if the user has requested an automatic prefix, generate it auto <- Sys.getenv("RENV_PATHS_PREFIX_AUTO", unset = NA) + if (is.na(auto) && getRversion() >= "4.4.0") + auto <- "TRUE" + if (auto %in% c("TRUE", "True", "true", "1")) return(renv_bootstrap_platform_prefix_auto()) @@ -801,24 +929,23 @@ local({ # the loaded version of renv doesn't match the requested version; # give the user instructions on how to proceed - remote <- if (!is.null(description[["RemoteSha"]])) { + dev <- identical(description[["RemoteType"]], "github") + remote <- if (dev) paste("rstudio/renv", description[["RemoteSha"]], sep = "@") - } else { + else paste("renv", description[["Version"]], sep = "@") - } # display both loaded version + sha if available friendly <- renv_bootstrap_version_friendly( version = description[["Version"]], - sha = description[["RemoteSha"]] + sha = if (dev) description[["RemoteSha"]] ) - fmt <- paste( - "renv %1$s was loaded from project library, but this project is configured to use renv %2$s.", - "- Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile.", - "- Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library.", - sep = "\n" - ) + fmt <- heredoc(" + renv %1$s was loaded from project library, but this project is configured to use renv %2$s. + - Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile. + - Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library. + ") catf(fmt, friendly, renv_bootstrap_version_friendly(version), remote) FALSE @@ -1041,7 +1168,7 @@ local({ # if jsonlite is loaded, use that instead if ("jsonlite" %in% loadedNamespaces()) { - json <- catch(renv_json_read_jsonlite(file, text)) + json <- tryCatch(renv_json_read_jsonlite(file, text), error = identity) if (!inherits(json, "error")) return(json) @@ -1050,7 +1177,7 @@ local({ } # otherwise, fall back to the default JSON reader - json <- catch(renv_json_read_default(file, text)) + json <- tryCatch(renv_json_read_default(file, text), error = identity) if (!inherits(json, "error")) return(json) @@ -1063,14 +1190,14 @@ local({ } renv_json_read_jsonlite <- function(file = NULL, text = NULL) { - text <- paste(text %||% read(file), collapse = "\n") + text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") jsonlite::fromJSON(txt = text, simplifyVector = FALSE) } renv_json_read_default <- function(file = NULL, text = NULL) { # find strings in the JSON - text <- paste(text %||% read(file), collapse = "\n") + text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") pattern <- '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' locs <- gregexpr(pattern, text, perl = TRUE)[[1]] @@ -1118,14 +1245,14 @@ local({ map <- as.list(map) # remap strings in object - remapped <- renv_json_remap(json, map) + remapped <- renv_json_read_remap(json, map) # evaluate eval(remapped, envir = baseenv()) } - renv_json_remap <- function(json, map) { + renv_json_read_remap <- function(json, map) { # fix names if (!is.null(names(json))) { @@ -1152,7 +1279,7 @@ local({ # recurse if (is.recursive(json)) { for (i in seq_along(json)) { - json[i] <- list(renv_json_remap(json[[i]], map)) + json[i] <- list(renv_json_read_remap(json[[i]], map)) } }