all build notes and errors handled

This commit is contained in:
Andreas Gammelgaard Damsbo 2024-10-10 13:22:22 +02:00
parent 9606f4527d
commit ea768fbba1
13 changed files with 195 additions and 476 deletions

View file

@ -6,7 +6,10 @@
^CODE_OF_CONDUCT\.md$
^app/
^publish_shiny.R
^publish_cran.R
^_pkgdown\.yml$
^docs$
^pkgdown$
^\.github$
^data/prioritized_sample\.xlsx$
^sample_data$

2
.gitignore vendored
View file

@ -5,3 +5,5 @@
.DS_Store
.quarto
docs
data/prioritized_sample.xlsx
sample_data

View file

@ -13,30 +13,27 @@ License: GPL (>= 3)
Imports:
dplyr,
ggplot2,
magrittr,
ompr,
ompr.roi,
openxlsx,
openxlsx2,
patchwork,
renv,
ROI,
ROI.plugin.symphony,
shiny,
tidyr,
viridisLite,
shinylive,
httpuv,
here,
cpp11,
ROI.plugin.alabama,
assertthat,
readODS
readODS,
tibble
Suggests:
pak,
usethis,
styler,
roxygen2,
devtools
devtools,
rhub,
here,
cpp11,
renv,
ROI,
ROI.plugin.symphony
Encoding: UTF-8
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.3.2

View file

@ -4,3 +4,4 @@ S3method(plot,prioritized_groups_list)
export(file_extension)
export(grouping_plot)
export(prioritized_grouping)
export(read_input)

View file

@ -16,9 +16,12 @@ utils::globalVariables(c("group", "grp", "i", "j", "value"))
#' @export
#'
#' @examples
#' prioritized_grouping(
#' data=read.csv(here::here("data/prioritized_sample.csv")),
#' pre_grouped=read.csv(here::here("data/pre_grouped.csv"))) |> plot()
#' # prioritized_grouping(
#' # data=read.csv(here::here("data/prioritized_sample.csv")),
#' # pre_grouped=read.csv(here::here("data/pre_grouped.csv"))) |> plot()
#' data.frame(id=paste0("id",1:100),
#' matrix(replicate(100,sample(c(1:5,rep(NA,15)),10)),ncol=10,byrow = TRUE)) |>
#' prioritized_grouping()
prioritized_grouping <-
function(data,
cap_classes = NULL,
@ -191,7 +194,7 @@ prioritized_grouping <-
class(out) <- c("prioritized_groups_list", class(out))
return(out)
invisible(out)
}
#' Assessment performance overview
@ -203,7 +206,7 @@ prioritized_grouping <-
#'
#' @param data A "prioritized_groups_list" class list from
#' 'prioritized_grouping()'
#' @param columns number of columns in plot
#' @param columns number of columns in plot. Default=4.
#' @param overall logical to only print overall groups mean priority/cost
#' @param viridis.option option value passed on to 'viridisLite::viridis'.
#' Default="D".
@ -217,8 +220,11 @@ prioritized_grouping <-
#' #read.csv(here::here("data/prioritized_sample.csv")) |>
#' # prioritized_grouping(cap_classes = sample(4:12, 17, TRUE)) |>
#' # grouping_plot()
#' data.frame(id=paste0("id",1:100),
#' matrix(replicate(100,sample(c(1:5,rep(NA,15)),10)),ncol=10,byrow = TRUE)) |>
#' prioritized_grouping() |> grouping_plot(overall=TRUE)
grouping_plot <- function(data,
columns = NULL,
columns = 4,
overall = FALSE,
viridis.option="D",
viridis.direction=-1) {
@ -286,18 +292,19 @@ grouping_plot <- function(data,
#' Plot extension for easy groupings plot
#'
#' @param data data of class 'prioritized_groups_list'
#' @param x data of class 'prioritized_groups_list'
#' @param ... passed on to 'grouping_plot()'
#'
#' @return ggplot2 list object
#' @export
#'
#' @examples
#' read.csv(here::here("data/prioritized_sample.csv")) |>
#' prioritized_grouping() |>
#' plot(overall = TRUE, viridis.option="D",viridis.direction=-1)
plot.prioritized_groups_list <- function(data, ...) {
grouping_plot(data, ...)
#' # read.csv(here::here("data/prioritized_sample.csv")) |>
#' # prioritized_grouping() |>
#' # plot(overall = TRUE, viridis.option="D",viridis.direction=-1)
#'
plot.prioritized_groups_list <- function(x, ...) {
grouping_plot(x, ...)
}
## Helper function for Shiny
@ -317,3 +324,39 @@ file_extension <- function(filenames) {
filenames, perl = TRUE
)
}
#' Flexible file import based on extension
#'
#' @param file file name
#' @param consider.na character vector of strings to consider as NAs
#'
#' @return tibble
#' @export
#'
#' @examples
#' read_input("https://raw.githubusercontent.com/agdamsbo/cognitive.index.lookup/main/data/sample.csv")
read_input <- function(file, consider.na = c("NA", '""', "")) {
ext <- file_extension(file)
tryCatch(
{
if (ext == "csv") {
df <- utils::read.csv(file = file, na = consider.na)
} else if (ext %in% c("xls", "xlsx")) {
df <- openxlsx2::read_xlsx(file = file, na.strings = consider.na)
} else if (ext == "ods") {
df <- readODS::read_ods(file = file)
} else {
stop("Input file format has to be on of:
'.csv', '.xls', '.xlsx', '.dta' or '.ods'")
}
},
error = function(e) {
# return a safeError if a parsing error occurs
stop(shiny::safeError(e))
}
)
df
}

View file

@ -325,6 +325,44 @@ file_extension <- function(filenames) {
}
read_input <- function(file, consider.na = c("NA", '""', "")) {
ext <- file_extension(file)
tryCatch(
{
if (ext == "csv") {
df <- utils::read.csv(file = file, na = consider.na)
} else if (ext %in% c("xls", "xlsx")) {
df <- openxlsx2::read_xlsx(file = file, na.strings = consider.na)
} else if (ext == "dta") {
df <- haven::read_dta(file = file)
} else if (ext == "ods") {
df <- readODS::read_ods(file = file)
} else {
stop("Input file format has to be on of:
'.csv', '.xls', '.xlsx', '.dta' or '.ods'")
}
},
error = function(e) {
# return a safeError if a parsing error occurs
stop(shiny::safeError(e))
}
)
df
}
########
#### Current file: app/server_raw.R
########
@ -341,27 +379,7 @@ server <- function(input, output, session) {
req(input$file1)
# Make laoding dependent of file name extension (file_ext())
ext <- file_extension(input$file1$datapath)
tryCatch(
{
if (ext == "csv") {
df <- utils::read.csv(input$file1$datapath,na.strings = c("NA", '""',""))
} else if (ext %in% c("xls", "xlsx")) {
df <- openxlsx::read.xlsx(input$file1$datapath,na.strings = c("NA", '""',""))
} else if (ext == "ods") {
df <- readODS::read_ods(file = file)
} else {
stop("Input file format has to be on of:
'.csv', '.xls', '.xlsx' or '.ods'")
}
},
error = function(e) {
# return a safeError if a parsing error occurs
stop(safeError(e))
}
)
df <- read_input(input$file1$datapath)
return(df)
})
@ -370,18 +388,7 @@ server <- function(input, output, session) {
# req(input$file2)
# Make laoding dependent of file name extension (file_ext())
if (!is.null(input$file2$datapath)){
ext <- file_extension(input$file2$datapath)
if (ext == "csv") {
df <- utils::read.csv(input$file2$datapath,na.strings = c("NA", '""',""))
} else if (ext %in% c("xls", "xlsx")) {
df <- openxlsx::read.xlsx(input$file2$datapath,na.strings = c("NA", '""',""))
} else if (ext == "ods") {
df <- readODS::read_ods(file = file)
} else {
stop("Input file format has to be on of:
'.csv', '.xls', '.xlsx' or '.ods'")
}
df <- read_input(input$file2$datapath)
return(df)
} else {

View file

@ -10,27 +10,7 @@ server <- function(input, output, session) {
req(input$file1)
# Make laoding dependent of file name extension (file_ext())
ext <- file_extension(input$file1$datapath)
tryCatch(
{
if (ext == "csv") {
df <- utils::read.csv(input$file1$datapath,na.strings = c("NA", '""',""))
} else if (ext %in% c("xls", "xlsx")) {
df <- openxlsx::read.xlsx(input$file1$datapath,na.strings = c("NA", '""',""))
} else if (ext == "ods") {
df <- readODS::read_ods(file = file)
} else {
stop("Input file format has to be on of:
'.csv', '.xls', '.xlsx' or '.ods'")
}
},
error = function(e) {
# return a safeError if a parsing error occurs
stop(safeError(e))
}
)
df <- read_input(input$file1$datapath)
return(df)
})
@ -39,18 +19,7 @@ server <- function(input, output, session) {
# req(input$file2)
# Make laoding dependent of file name extension (file_ext())
if (!is.null(input$file2$datapath)){
ext <- file_extension(input$file2$datapath)
if (ext == "csv") {
df <- utils::read.csv(input$file2$datapath,na.strings = c("NA", '""',""))
} else if (ext %in% c("xls", "xlsx")) {
df <- openxlsx::read.xlsx(input$file2$datapath,na.strings = c("NA", '""',""))
} else if (ext == "ods") {
df <- readODS::read_ods(file = file)
} else {
stop("Input file format has to be on of:
'.csv', '.xls', '.xlsx' or '.ods'")
}
df <- read_input(input$file2$datapath)
return(df)
} else {

View file

@ -6,7 +6,7 @@
\usage{
grouping_plot(
data,
columns = NULL,
columns = 4,
overall = FALSE,
viridis.option = "D",
viridis.direction = -1
@ -16,7 +16,7 @@ grouping_plot(
\item{data}{A "prioritized_groups_list" class list from
'prioritized_grouping()'}
\item{columns}{number of columns in plot}
\item{columns}{number of columns in plot. Default=4.}
\item{overall}{logical to only print overall groups mean priority/cost}
@ -39,4 +39,7 @@ in the group.
#read.csv(here::here("data/prioritized_sample.csv")) |>
# prioritized_grouping(cap_classes = sample(4:12, 17, TRUE)) |>
# grouping_plot()
data.frame(id=paste0("id",1:100),
matrix(replicate(100,sample(c(1:5,rep(NA,15)),10)),ncol=10,byrow = TRUE)) |>
prioritized_grouping() |> grouping_plot(overall=TRUE)
}

View file

@ -4,10 +4,10 @@
\alias{plot.prioritized_groups_list}
\title{Plot extension for easy groupings plot}
\usage{
\method{plot}{prioritized_groups_list}(data, ...)
\method{plot}{prioritized_groups_list}(x, ...)
}
\arguments{
\item{data}{data of class 'prioritized_groups_list'}
\item{x}{data of class 'prioritized_groups_list'}
\item{...}{passed on to 'grouping_plot()'}
}
@ -18,7 +18,8 @@ ggplot2 list object
Plot extension for easy groupings plot
}
\examples{
read.csv(here::here("data/prioritized_sample.csv")) |>
prioritized_grouping() |>
plot(overall = TRUE, viridis.option="D",viridis.direction=-1)
# read.csv(here::here("data/prioritized_sample.csv")) |>
# prioritized_grouping() |>
# plot(overall = TRUE, viridis.option="D",viridis.direction=-1)
}

View file

@ -34,7 +34,10 @@ list of custom class 'prioritized_groups_list'
Solve grouping based on priorities or costs.
}
\examples{
prioritized_grouping(
data=read.csv(here::here("data/prioritized_sample.csv")),
pre_grouped=read.csv(here::here("data/pre_grouped.csv"))) |> plot()
# prioritized_grouping(
# data=read.csv(here::here("data/prioritized_sample.csv")),
# pre_grouped=read.csv(here::here("data/pre_grouped.csv"))) |> plot()
data.frame(id=paste0("id",1:100),
matrix(replicate(100,sample(c(1:5,rep(NA,15)),10)),ncol=10,byrow = TRUE)) |>
prioritized_grouping()
}

22
man/read_input.Rd Normal file
View file

@ -0,0 +1,22 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/prioritized_grouping.R
\name{read_input}
\alias{read_input}
\title{Flexible file import based on extension}
\usage{
read_input(file, consider.na = c("NA", "\\"\\"", ""))
}
\arguments{
\item{file}{file name}
\item{consider.na}{character vector of strings to consider as NAs}
}
\value{
tibble
}
\description{
Flexible file import based on extension
}
\examples{
read_input("https://raw.githubusercontent.com/agdamsbo/cognitive.index.lookup/main/data/sample.csv")
}

36
publish_cran.R Normal file
View file

@ -0,0 +1,36 @@
# Checks for publishing
# Rhub v2
# rhub::rhub_setup()
# rhub::rhub_doctor()
rhub::rhub_check(platforms = c(
"linux",
"macos",
"macos-arm64",
"windows"))
# rhub::rhub_setup(overwrite = TRUE)
# rhub::rhub_platforms()
# SPELLING - dont use usethis::use_spell_check() - tests create notes on CRAN - not good
devtools::spell_check()
spelling::update_wordlist()
# Release on CRAN - confirm e-mail
devtools::release()
# Use the following to publish latest release to GitHub
usethis::use_github_release()
## Testing
##
# ds <- data.frame(id=paste0("id",1:100),matrix(replicate(100,sample(c(1:5,rep(NA,15)),10)),ncol=10,byrow = TRUE))
#
# ls <- ds|> prioritized_grouping(seed = 7)
#
# ls$export |> tibble::as.tibble() |> dplyr::right_join(ds,by = c("ID"="id")) |> View()

382
renv.lock
View file

@ -76,20 +76,6 @@
],
"Hash": "42ce9ee4c1cf168869f4386d2cdeadd2"
},
"ROI.plugin.alabama": {
"Package": "ROI.plugin.alabama",
"Version": "1.0-2",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
"ROI",
"alabama",
"methods",
"stats",
"utils"
],
"Hash": "097f1b625baf91f0d8999a1385054250"
},
"ROI.plugin.symphony": {
"Package": "ROI.plugin.symphony",
"Version": "1.0-0",
@ -124,41 +110,6 @@
],
"Hash": "3f55239fe534fe91e739c77d99a4ffbf"
},
"alabama": {
"Package": "alabama",
"Version": "2023.1.0",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
"R",
"numDeriv"
],
"Hash": "593db7eb170506e6b61ca0c803201924"
},
"archive": {
"Package": "archive",
"Version": "1.1.9",
"Source": "Repository",
"Repository": "RSPM",
"Requirements": [
"R",
"cli",
"glue",
"rlang",
"tibble"
],
"Hash": "d26b62e131d4a8b65aba4e9554a4bf74"
},
"askpass": {
"Package": "askpass",
"Version": "1.2.1",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
"sys"
],
"Hash": "c39f4155b3ceb1a9a2799d700fbd4b6a"
},
"assertthat": {
"Package": "assertthat",
"Version": "0.2.1",
@ -189,16 +140,6 @@
],
"Hash": "543776ae6848fde2f48ff3816d0628bc"
},
"brio": {
"Package": "brio",
"Version": "1.1.5",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
"R"
],
"Hash": "c1ee497a6d999947c2c224ae46799b1a"
},
"bslib": {
"Package": "bslib",
"Version": "0.8.0",
@ -232,19 +173,6 @@
],
"Hash": "cd9a672193789068eb5a2aad65a0dedf"
},
"callr": {
"Package": "callr",
"Version": "3.7.6",
"Source": "Repository",
"Repository": "RSPM",
"Requirements": [
"R",
"R6",
"processx",
"utils"
],
"Hash": "d7e13f49c19103ece9e58ad2d83a7354"
},
"cellranger": {
"Package": "cellranger",
"Version": "1.1.0",
@ -323,16 +251,6 @@
],
"Hash": "859d96e65ef198fd43e82b9628d593ef"
},
"curl": {
"Package": "curl",
"Version": "5.2.3",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
"R"
],
"Hash": "d91263322a58af798f6cf3b13fd56dde"
},
"data.table": {
"Package": "data.table",
"Version": "1.16.0",
@ -344,19 +262,6 @@
],
"Hash": "fb24e05d4a91d8b1c7ff8e284bde834a"
},
"desc": {
"Package": "desc",
"Version": "1.4.3",
"Source": "Repository",
"Repository": "RSPM",
"Requirements": [
"R",
"R6",
"cli",
"utils"
],
"Hash": "99b79fcbd6c4d1ce087f5c5c758b384f"
},
"digest": {
"Package": "digest",
"Version": "0.6.37",
@ -417,16 +322,6 @@
"Repository": "RSPM",
"Hash": "aa5e1cd11c2d15497494c5292d7ffcc8"
},
"filelock": {
"Package": "filelock",
"Version": "1.0.3",
"Source": "Repository",
"Repository": "RSPM",
"Requirements": [
"R"
],
"Hash": "192053c276525c8495ccfd523aa8f2d1"
},
"fontawesome": {
"Package": "fontawesome",
"Version": "0.5.2",
@ -486,34 +381,6 @@
],
"Hash": "44c6a2f8202d5b7e878ea274b1092426"
},
"gh": {
"Package": "gh",
"Version": "1.4.1",
"Source": "Repository",
"Repository": "RSPM",
"Requirements": [
"R",
"cli",
"gitcreds",
"glue",
"httr2",
"ini",
"jsonlite",
"lifecycle",
"rlang"
],
"Hash": "fbbbc48eba7a6626a08bb365e44b563b"
},
"gitcreds": {
"Package": "gitcreds",
"Version": "0.1.2",
"Source": "Repository",
"Repository": "RSPM",
"Requirements": [
"R"
],
"Hash": "ab08ac61f3e1be454ae21911eb8bc2fe"
},
"glue": {
"Package": "glue",
"Version": "1.8.0",
@ -540,30 +407,6 @@
],
"Hash": "e18861963cbc65a27736e02b3cd3c4a0"
},
"here": {
"Package": "here",
"Version": "1.0.1",
"Source": "Repository",
"Repository": "RSPM",
"Requirements": [
"rprojroot"
],
"Hash": "24b224366f9c2e7534d2344d10d59211"
},
"hms": {
"Package": "hms",
"Version": "1.1.3",
"Source": "Repository",
"Repository": "RSPM",
"Requirements": [
"lifecycle",
"methods",
"pkgconfig",
"rlang",
"vctrs"
],
"Hash": "b59377caa7ed00fa41808342002138f9"
},
"htmltools": {
"Package": "htmltools",
"Version": "0.5.8.1",
@ -595,34 +438,6 @@
],
"Hash": "d55aa087c47a63ead0f6fc10f8fa1ee0"
},
"httr2": {
"Package": "httr2",
"Version": "1.0.5",
"Source": "Repository",
"Repository": "RSPM",
"Requirements": [
"R",
"R6",
"cli",
"curl",
"glue",
"lifecycle",
"magrittr",
"openssl",
"rappdirs",
"rlang",
"vctrs",
"withr"
],
"Hash": "d84e4c33206aaace37714901ac2b00c3"
},
"ini": {
"Package": "ini",
"Version": "0.3.1",
"Source": "Repository",
"Repository": "CRAN",
"Hash": "6154ec2223172bce8162d4153cda21f7"
},
"isoband": {
"Package": "isoband",
"Version": "0.2.7",
@ -725,13 +540,6 @@
],
"Hash": "4062982514dd797c7013124da49994c8"
},
"lpSolve": {
"Package": "lpSolve",
"Version": "5.6.21",
"Source": "Repository",
"Repository": "RSPM",
"Hash": "730a90bdc519fb0caff03df11218ddd8"
},
"magrittr": {
"Package": "magrittr",
"Version": "2.0.3",
@ -817,16 +625,6 @@
],
"Hash": "ccbb8846be320b627e6aa2b4616a2ded"
},
"numDeriv": {
"Package": "numDeriv",
"Version": "2016.8-1.1",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
"R"
],
"Hash": "df58958f293b166e4ab885ebcad90e02"
},
"ompr": {
"Package": "ompr",
"Version": "1.0.4",
@ -859,32 +657,22 @@
],
"Hash": "0f9f0bb7e9cff9da0237c8bd206d40a2"
},
"openssl": {
"Package": "openssl",
"Version": "2.2.2",
"openxlsx2": {
"Package": "openxlsx2",
"Version": "1.9",
"Source": "Repository",
"Repository": "RSPM",
"Requirements": [
"askpass"
],
"Hash": "d413e0fef796c9401a4419485f709ca1"
},
"openxlsx": {
"Package": "openxlsx",
"Version": "4.2.7.1",
"Source": "Repository",
"Repository": "RSPM",
"Repository": "CRAN",
"Requirements": [
"R",
"R6",
"Rcpp",
"grDevices",
"methods",
"stats",
"magrittr",
"stringi",
"utils",
"zip"
],
"Hash": "14304e44a0f90fa2d0f905472333c561"
"Hash": "f3e00e7d16abb500e63faee67b7dc1a7"
},
"patchwork": {
"Package": "patchwork",
@ -922,40 +710,6 @@
],
"Hash": "15da5a8412f317beeee6175fbc76f4bb"
},
"pkgbuild": {
"Package": "pkgbuild",
"Version": "1.4.4",
"Source": "Repository",
"Repository": "RSPM",
"Requirements": [
"R",
"R6",
"callr",
"cli",
"desc",
"processx"
],
"Hash": "a29e8e134a460a01e0ca67a4763c595b"
},
"pkgcache": {
"Package": "pkgcache",
"Version": "2.2.3",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
"R",
"R6",
"callr",
"cli",
"curl",
"filelock",
"jsonlite",
"processx",
"tools",
"utils"
],
"Hash": "502554da4ec4d917b737e6b0fe14dd11"
},
"pkgconfig": {
"Package": "pkgconfig",
"Version": "2.0.3",
@ -966,68 +720,6 @@
],
"Hash": "01f28d4278f15c76cddbea05899c5d6f"
},
"pkgdepends": {
"Package": "pkgdepends",
"Version": "0.8.0",
"Source": "Repository",
"Repository": "RSPM",
"Requirements": [
"R",
"R6",
"callr",
"cli",
"curl",
"desc",
"filelock",
"jsonlite",
"lpSolve",
"pkgbuild",
"pkgcache",
"processx",
"ps",
"stats",
"utils",
"zip"
],
"Hash": "eb7e3e965327555a527196d26d0643e4"
},
"prettyunits": {
"Package": "prettyunits",
"Version": "1.2.0",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
"R"
],
"Hash": "6b01fc98b1e86c4f705ce9dcfd2f57c7"
},
"processx": {
"Package": "processx",
"Version": "3.8.4",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
"R",
"R6",
"ps",
"utils"
],
"Hash": "0c90a7d71988856bad2a2a45dd871bb9"
},
"progress": {
"Package": "progress",
"Version": "1.2.3",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
"R",
"R6",
"crayon",
"hms",
"prettyunits"
],
"Hash": "f4625e061cb2865f111b47ff163a5ca6"
},
"promises": {
"Package": "promises",
"Version": "1.3.0",
@ -1044,17 +736,6 @@
],
"Hash": "434cd5388a3979e74be5c219bcd6e77d"
},
"ps": {
"Package": "ps",
"Version": "1.8.0",
"Source": "Repository",
"Repository": "RSPM",
"Requirements": [
"R",
"utils"
],
"Hash": "4b9c8485b0c7eecdf0a9ba5132a45576"
},
"purrr": {
"Package": "purrr",
"Version": "1.0.2",
@ -1136,16 +817,6 @@
],
"Hash": "3eec01f8b1dee337674b2e34ab1f9bc1"
},
"rprojroot": {
"Package": "rprojroot",
"Version": "2.0.4",
"Source": "Repository",
"Repository": "RSPM",
"Requirements": [
"R"
],
"Hash": "4c8415e0ec1e29f3f4f6fc108bef0144"
},
"sass": {
"Package": "sass",
"Version": "0.4.9",
@ -1213,31 +884,6 @@
],
"Hash": "6a293995a66e12c48d13aa1f957d09c7"
},
"shinylive": {
"Package": "shinylive",
"Version": "0.2.0",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
"archive",
"brio",
"cli",
"fs",
"gh",
"glue",
"httr2",
"jsonlite",
"pkgdepends",
"progress",
"rappdirs",
"renv",
"rlang",
"tools",
"whisker",
"withr"
],
"Hash": "224c8c0502bb0ead1fd1b4b32ea04a90"
},
"slam": {
"Package": "slam",
"Version": "0.1-53",
@ -1289,13 +935,6 @@
],
"Hash": "960e2ae9e09656611e0b8214ad543207"
},
"sys": {
"Package": "sys",
"Version": "3.4.3",
"Source": "Repository",
"Repository": "RSPM",
"Hash": "de342ebfebdbf40477d0758d05426646"
},
"tibble": {
"Package": "tibble",
"Version": "3.2.1",
@ -1399,13 +1038,6 @@
],
"Hash": "c826c7c4241b6fc89ff55aaea3fa7491"
},
"whisker": {
"Package": "whisker",
"Version": "0.4.1",
"Source": "Repository",
"Repository": "RSPM",
"Hash": "c6abfa47a46d281a7d5159d0a8891e88"
},
"withr": {
"Package": "withr",
"Version": "3.0.1",