commit 0476f6f8f886d2510b382ed8b4c81832fbcabee9 Author: Rob Wiederstein Date: Tue Feb 10 04:52:37 2026 -0500 initial commit diff --git a/.Rbuildignore b/.Rbuildignore new file mode 100644 index 0000000..7409f4e --- /dev/null +++ b/.Rbuildignore @@ -0,0 +1,5 @@ +^renv$ +^renv\.lock$ +^LICENSE\.md$ +^.*\.Rproj$ +^\.Rproj\.user$ diff --git a/.Rprofile b/.Rprofile new file mode 100644 index 0000000..e41eb01 --- /dev/null +++ b/.Rprofile @@ -0,0 +1,40 @@ +source("renv/activate.R") +if (interactive()) { + suppressMessages(library(targets)) +} +# --- Targets Aliases --- +tm <- targets::tar_make +ti <- targets::tar_invalidate +tr <- targets::tar_read +to <- targets::tar_outdated + +# Specific Macros +tmr <- function() targets::tar_make(report) +tir <- function() targets::tar_invalidate(report) + +# --- renv Aliases --- +rs <- renv::status # check health +ri <- renv::install # install packages +rsp <- renv::snapshot # save library state (snapshot) +rr <- renv::restore # revert to lockfile + +# --- The "Cheat Sheet" Startup Message --- +message( + "\n---------------------------------------------", + "\n SHORTCUTS LOADED", + "\n---------------------------------------------", + "\n [Targets]", + "\n tm = tar_make()", + "\n ti = tar_invalidate()", + "\n tr = tar_read()", + "\n to = tar_outdated()", + "\n tmr = tar_make(report)", + "\n tir = tar_invalidate(report)", + "\n", + "\n [renv]", + "\n rs = renv::status()", + "\n ri = renv::install()", + "\n rsp = renv::snapshot()", + "\n rr = renv::restore()", + "\n---------------------------------------------\n" +) diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..9ff874c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +.git +.gitignore +.Rproj.user +_targets/ +_site/ +*.html +*.DS_Store \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8a6c6ef --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# --- Data and Pipeline --- +data/ +_targets/ +_targets.user + +# --- R Environment --- +.Rproj.user/ +.Rhistory +.RData +.Renviron +.Ruserdata +# Keep the lockfile, ignore the library +renv/library/ +renv/staging/ +renv/python/ + +# --- Quarto and Output --- +# Since you are hosting via Caddy/Rsync, +# stop tracking these in Git to avoid bloat. +.quarto/ +*_cache/ +*_files/ +index.html + +# --- System --- +.DS_Store diff --git a/DESCRIPTION b/DESCRIPTION new file mode 100644 index 0000000..6ea2f9f --- /dev/null +++ b/DESCRIPTION @@ -0,0 +1,30 @@ +Package: forestedAnalysis +Title: Spatial Cross-Validation and AOA Analysis of Forest Cover +Version: 0.0.0.9000 +Authors@R: + person("Rob", "Wiederstein", , "khuon68@gmail.com", role = c("aut", "cre")) +Description: A research compendium analyzing forest cover data in Washington and Georgia. + It evaluates the Area of Applicability (AOA) and demonstrates model failure + during spatial extrapolation. +License: MIT +Encoding: UTF-8 +Roxygen: list(markdown = TRUE) +RoxygenNote: 7.3.3 +Depends: + tidymodels, + tidyverse +Imports: + cowplot, + forested, + ggplot2, + ggrepel, + knitr, + patchwork, + quarto, + rmarkdown, + sf, + showtext, + sysfonts, + targets, + terra, + waywiser diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..113a2f6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,52 @@ +FROM rocker/tidyverse:4.4.0 + +RUN apt-get update && apt-get install -y \ + nano \ + neovim \ + git \ + bash-completion \ + openssh-client \ + cmake \ + libglpk-dev \ + libcurl4-openssl-dev \ + libssl-dev \ + libxml2-dev \ + libfontconfig1-dev \ + libfreetype6-dev \ + libharfbuzz-dev \ + libfribidi-dev \ + libpng-dev \ + libjpeg-dev \ + libtiff-dev \ + libwebp-dev \ + gdal-bin \ + libgdal-dev \ + libproj-dev \ + libgeos-dev \ + libudunits2-dev \ + && rm -rf /var/lib/apt/lists/* + +# --- CONFIGURATION FIXES --- +# 1. Move library out of project folder (fixes Volume Trap) +ENV RENV_PATHS_LIBRARY=/renv/library +# 2. Disable Symlinks (fixes Root Permission Trap) <--- CRITICAL NEW LINE +ENV RENV_CONFIG_CACHE_SYMLINKS=FALSE + +RUN mkdir -p /renv/library && chmod 777 /renv/library + +WORKDIR /home/rstudio/project + +COPY renv.lock renv.lock +COPY .Rprofile .Rprofile +COPY renv/activate.R renv/activate.R +COPY renv/settings.json renv/settings.json + +# Restore (Binaries + No Symlinks) +RUN R -e "options(repos = c(CRAN = 'https://packagemanager.posit.co/cran/__linux__/jammy/latest')); install.packages('renv'); renv::restore()" + +COPY . . + +# Ensure the actual files are readable by everyone +RUN chmod -R 777 /renv + +CMD ["R"] \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8cd4469 --- /dev/null +++ b/LICENSE @@ -0,0 +1,2 @@ +YEAR: 2026 +COPYRIGHT HOLDER: Rob Wiederstein diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..14ffc50 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +# MIT License + +Copyright (c) 2026 forested authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/NAMESPACE b/NAMESPACE new file mode 100644 index 0000000..d6fce0c --- /dev/null +++ b/NAMESPACE @@ -0,0 +1,135 @@ +# Generated by roxygen2: do not edit by hand + +export(calculate_ga_aoa) +export(combine_forest) +export(create_stats_summary) +export(get_epa_ecoregions) +export(helper_save_fig) +export(plot_ecoregion_comparison) +export(plot_failure_mechanism) +export(plot_ga_comparison_map) +export(plot_georgia_aoa) +export(plot_precip_hex_comparison) +export(plot_regional_comparison) +export(plot_rf_importance) +export(plot_spatial_exploration) +export(plot_state_topo) +export(plot_theme_diagnostic) +export(plot_us_map) +export(process_ecoregions) +export(save_combined_topo) +export(save_error_map_png) +export(save_outlier_map_png) +export(setup_forestry_fonts) +export(style_audit_table) +export(theme_forestry_plot) +export(theme_forestry_spatial) +export(theme_forestry_void) +importFrom(colorspace,scale_color_discrete_qualitative) +importFrom(colorspace,scale_fill_discrete_qualitative) +importFrom(cowplot,background_grid) +importFrom(cowplot,theme_cowplot) +importFrom(dplyr,"%>%") +importFrom(dplyr,all_of) +importFrom(dplyr,any_of) +importFrom(dplyr,arrange) +importFrom(dplyr,bind_cols) +importFrom(dplyr,case_when) +importFrom(dplyr,desc) +importFrom(dplyr,filter) +importFrom(dplyr,group_by) +importFrom(dplyr,if_any) +importFrom(dplyr,if_else) +importFrom(dplyr,inner_join) +importFrom(dplyr,mutate) +importFrom(dplyr,rename) +importFrom(dplyr,row_number) +importFrom(dplyr,select) +importFrom(dplyr,summarize) +importFrom(dplyr,where) +importFrom(ggplot2,aes) +importFrom(ggplot2,after_stat) +importFrom(ggplot2,coord_sf) +importFrom(ggplot2,element_blank) +importFrom(ggplot2,element_line) +importFrom(ggplot2,element_rect) +importFrom(ggplot2,element_text) +importFrom(ggplot2,geom_hline) +importFrom(ggplot2,geom_point) +importFrom(ggplot2,geom_segment) +importFrom(ggplot2,geom_sf) +importFrom(ggplot2,geom_smooth) +importFrom(ggplot2,geom_vline) +importFrom(ggplot2,ggplot) +importFrom(ggplot2,ggsave) +importFrom(ggplot2,guide_colorbar) +importFrom(ggplot2,guide_legend) +importFrom(ggplot2,guide_none) +importFrom(ggplot2,guides) +importFrom(ggplot2,labs) +importFrom(ggplot2,margin) +importFrom(ggplot2,rel) +importFrom(ggplot2,scale_alpha) +importFrom(ggplot2,scale_color_manual) +importFrom(ggplot2,scale_color_viridis_c) +importFrom(ggplot2,scale_fill_discrete) +importFrom(ggplot2,scale_fill_distiller) +importFrom(ggplot2,scale_fill_manual) +importFrom(ggplot2,scale_shape_manual) +importFrom(ggplot2,scale_x_continuous) +importFrom(ggplot2,scale_y_continuous) +importFrom(ggplot2,theme) +importFrom(ggplot2,theme_minimal) +importFrom(ggplot2,theme_void) +importFrom(ggplot2,unit) +importFrom(ggrepel,geom_label_repel) +importFrom(gt,fmt_number) +importFrom(gt,gt) +importFrom(gt,opt_row_striping) +importFrom(gt,px) +importFrom(gt,tab_header) +importFrom(gt,tab_options) +importFrom(patchwork,plot_annotation) +importFrom(patchwork,plot_layout) +importFrom(patchwork,wrap_plots) +importFrom(psych,describe) +importFrom(ranger,ranger) +importFrom(rmapshaper,ms_filter_islands) +importFrom(rmapshaper,ms_simplify) +importFrom(scales,squish) +importFrom(sf,read_sf) +importFrom(sf,sf_use_s2) +importFrom(sf,st_as_sf) +importFrom(sf,st_coordinates) +importFrom(sf,st_crs) +importFrom(sf,st_drop_geometry) +importFrom(sf,st_filter) +importFrom(sf,st_intersection) +importFrom(sf,st_join) +importFrom(sf,st_make_grid) +importFrom(sf,st_make_valid) +importFrom(sf,st_point_on_surface) +importFrom(sf,st_read) +importFrom(sf,st_transform) +importFrom(sf,st_union) +importFrom(showtext,showtext_auto) +importFrom(spdep,card) +importFrom(spdep,dnearneigh) +importFrom(spdep,lag.listw) +importFrom(spdep,nb2listw) +importFrom(stats,predict) +importFrom(stringr,str_wrap) +importFrom(sysfonts,font_add_google) +importFrom(terra,rast) +importFrom(terra,shade) +importFrom(terra,terrain) +importFrom(tibble,rownames_to_column) +importFrom(tibble,tibble) +importFrom(tidyterra,geom_spatraster) +importFrom(tidyterra,scale_fill_hypso_c) +importFrom(tigris,shift_geometry) +importFrom(tigris,states) +importFrom(utils,download.file) +importFrom(utils,unzip) +importFrom(vip,vi) +importFrom(waywiser,ww_area_of_applicability) diff --git a/R/forestedAnalysis-package.R b/R/forestedAnalysis-package.R new file mode 100644 index 0000000..a65cf64 --- /dev/null +++ b/R/forestedAnalysis-package.R @@ -0,0 +1,6 @@ +#' @keywords internal +"_PACKAGE" + +## usethis namespace: start +## usethis namespace: end +NULL diff --git a/R/functions.R b/R/functions.R new file mode 100644 index 0000000..2823e6d --- /dev/null +++ b/R/functions.R @@ -0,0 +1,2288 @@ +#' Helper: Save Plot for Quarto Slide +#' +#' @description Saves a ggplot object as a PNG, sized to fit comfortably +#' below a standard slide title, with robust font handling. +#' +#' @param plot_obj The ggplot object to save. +#' @param name A short descriptive name (e.g., "wa_ecoregions"). +#' @param type Either "map" or "plot". Adds this prefix to the filename. +#' @param width Width in inches (default: 10). +#' @param height Height in inches (default: 6.18). +#' @param dpi Resolution (default: 300). +#' +#' @return The full file path (invisibly). +#' @export +helper_save_fig <- function(plot_obj, name, type = c("map", "plot"), + width = 10, height = 6.18, dpi = 300) { + + # 1. Input Validation & Directory Setup + type <- match.arg(type) + if (!dir.exists("figs")) dir.create("figs") + + # Construct filename: figs/map_washington.png + filename <- paste0("figs/", type, "_", name, ".png") + + # 2. Force Fonts (The "Amnesia" Fix) + # Critical: We must turn the engine on immediately before saving + # to prevent the new graphics device from reverting to Arial. + sysfonts::font_add_google("Atkinson Hyperlegible", family = "atkinson") + showtext::showtext_auto() + showtext::showtext_opts(dpi = dpi) + + # 3. Save the File + ggplot2::ggsave( + filename = filename, + plot = plot_obj, + width = width, + height = height, + dpi = dpi, + bg = "white" # Prevents transparent backgrounds + ) + + message(paste("Saved:", filename)) + return(invisible(filename)) +} + +#' Register Project Fonts +#' +#' Registers 'Atkinson Hyperlegible Next' (Sans) and 'Atkinson Hyperlegible Mono' +#' (Monospace) with the sysfonts package for use in R graphics. +#' +#' @return NULL (called for side effects) +#' @export +setup_forestry_fonts <- function() { + + font_dir <- "assets/fonts" + + if (!dir.exists(font_dir)) { + warning(paste("Font directory not found at:", font_dir)) + return(NULL) + } + + # 1. Main Text Font (Sans) + sysfonts::font_add( + family = "atkinson", + regular = file.path(font_dir, "AtkinsonHyperlegibleNext-Regular.ttf"), + bold = file.path(font_dir, "AtkinsonHyperlegibleNext-Bold.ttf"), + italic = file.path(font_dir, "AtkinsonHyperlegibleNext-Italic.ttf"), + bolditalic = file.path(font_dir, "AtkinsonHyperlegibleNext-BoldItalic.ttf") + ) + + # 2. Code/Number Font (Mono) + sysfonts::font_add( + family = "atkinson_mono", + regular = file.path(font_dir, "AtkinsonHyperlegibleMono-Regular.ttf"), + bold = file.path(font_dir, "AtkinsonHyperlegibleMono-Bold.ttf") + ) + + # 3. Enable showtext rendering + showtext::showtext_auto() + + showtext::showtext_opts(dpi = 300) +} + + +#' Standardized Void Theme (Maximal Data Ink) +#' @description Removes axes/grids for shape-focused maps, but keeps project fonts. +#' @export +theme_forestry_void <- function(base_size = 16) { + # 1. Start with the void (empty) theme + ggplot2::theme_void(base_family = "atkinson", base_size = base_size) + + + # 2. Add back the specific text elements we need + ggplot2::theme( + # Keep the Legend styled correctly + legend.position = "bottom", + legend.title = ggplot2::element_text( + family = "atkinson", + face = "bold", + size = ggplot2::rel(1) + ), + legend.text = ggplot2::element_text( + family = "atkinson", + size = ggplot2::rel(0.9) + ), + + # Keep Titles (if you use them inside the plot) + plot.title = ggplot2::element_text( + family = "atkinson", + face = "bold", + hjust = 0.5, + margin = ggplot2::margin(b = 5) + ), + + # Zero margins to force edges to touch + plot.margin = ggplot2::margin(5, 5, 5, 5) + ) +} + +#' Standard Forestry Plot Theme (Cowplot + Atkinson) +#' +#' @description A standardized theme for non-spatial plots (scatter, bar, line). +#' Based on cowplot::theme_cowplot(), it includes clean axes and a minimalist look. +#' Uses 'Atkinson Hyperlegible Next' for all text. +#' +#' @param font_size Integer. Base font size. Default is 14 (good for slides). +#' @param grid Logical. If TRUE, adds a light gray grid (useful for presentations). +#' +#' @importFrom cowplot theme_cowplot background_grid +#' @importFrom ggplot2 theme element_text element_rect margin +#' @export +theme_forestry_plot <- function(font_size = 14, grid = TRUE) { + + # 1. Ensure Fonts are Registered + setup_forestry_fonts() + + # 2. Base Theme (Cowplot with Atkinson) + # cowplot::theme_cowplot has a 'font_family' argument we can leverage directly + base <- cowplot::theme_cowplot(font_size = font_size, font_family = "atkinson") + + ggplot2::theme( + + # Fonts: We force family="atkinson" here just to be safe for overrides + plot.title = ggplot2::element_text(family = "atkinson", face = "bold", hjust = 0.5, size = font_size + 2), + axis.title = ggplot2::element_text(family = "atkinson", face = "bold", size = font_size), + legend.title = ggplot2::element_text(family = "atkinson", face = "bold", size = font_size), + legend.text = ggplot2::element_text(family = "atkinson", size = font_size - 1), + + # Optional: Use Monospace for axis numbers? (Uncomment if you want the "technical" look) + # axis.text = ggplot2::element_text(family = "atkinson_mono", size = font_size - 1), + + # Backgrounds (Transparent for slides) + plot.background = ggplot2::element_rect(fill = "transparent", color = NA), + panel.background = ggplot2::element_rect(fill = "transparent", color = NA), + + # Margins + legend.box.margin = ggplot2::margin(10, 10, 10, 10) + ) + + # 3. Optional Grid + if (grid) { + base <- base + cowplot::background_grid(major = "y", minor = "none", color.major = "grey92") + } + + return(base) +} + +#' Standardized Spatial Theme (Atkinson) +#' @description High-visibility map theme for presentations using Atkinson fonts. +#' @importFrom ggplot2 theme_minimal theme element_line element_blank element_text element_rect margin unit +#' @export +theme_forestry_spatial <- function(base_size = 16) { + + # 1. Ensure Fonts are Registered + setup_forestry_fonts() + + # 2. Base Theme with Relative Sizing + ggplot2::theme_minimal(base_family = "atkinson", base_size = base_size) + + ggplot2::theme( + # Minimalist grid lines (Graticules) + panel.grid.major = ggplot2::element_line(color = "grey90", linewidth = 0.2), + panel.grid.minor = ggplot2::element_blank(), + + # Titles: Scale relative to base_size (12 * 1.5 = 18pt) + plot.title = ggplot2::element_text( + family = "atkinson", + face = "bold", + size = ggplot2::rel(1.5), + color = "#2c3e50" + ), + + # Axis Labels: Slightly smaller than base (12 * 0.8 = 9.6pt) + axis.text = ggplot2::element_text( + family = "atkinson", + size = ggplot2::rel(0.8), + color = "#5d6d7e" + ), + + # Legend: Scale relative to base + legend.position = "right", + legend.title = ggplot2::element_text( + family = "atkinson", + size = ggplot2::rel(1.1), # ~13.2pt + face = "bold" + ), + legend.text = ggplot2::element_text( + family = "atkinson", + size = ggplot2::rel(0.9) # ~10.8pt + ), + + # Clean borders + panel.border = ggplot2::element_rect(color = "grey80", fill = NA, linewidth = 0.5), + plot.margin = ggplot2::margin(5, 5, 5, 5) + ) +} +#' Simplified Theme Diagnostic +#' @description Uses built-in NC data to verify theme_forestry_spatial. +#' @importFrom sf st_read st_crs +#' @importFrom ggplot2 ggplot geom_sf labs coord_sf scale_x_continuous scale_y_continuous +#' @export +plot_theme_diagnostic <- function() { + # Pull NC data included with the sf package + nc <- sf::st_read(system.file("shape/nc.shp", package = "sf"), quiet = TRUE) + + # Render with your spatial theme + ggplot2::ggplot(nc) + + ggplot2::geom_sf(fill = "#27ae60", alpha = 0.3, color = "#2c3e50") + + # Force WGS84 graticules (Decimal Degrees) + ggplot2::coord_sf(datum = sf::st_crs(4326)) + + theme_forestry_spatial() + + ggplot2::labs( + title = "Theme Diagnostic: North Carolina", + subtitle = "Testing 24pt Title and 14pt Graticule Labels" + ) +} + +#' Combine Washington and Georgia Forest Data +#' +#' Merges the Washington and Georgia datasets into a single data frame, adding a +#' column to identify the source state. +#' +#' @param wa_data A data frame containing the Washington forest inventory data. +#' @param ga_data A data frame containing the Georgia forest inventory data. +#' +#' @return A single combined data frame with an additional column `.id` +#' (renamed to "state") indicating the source ("WA" or "GA"). +#' +#' @examples +#' \dontrun{ +#' combined <- combine_forest(wa_raw, ga_raw) +#' table(combined$state) +#' } +#' +#' @export +combine_forest <- function(wa_data, ga_data){ + dplyr::bind_rows( + list(WA = wa_data, GA = ga_data), + .id = "state" + ) +} + +#' Format Statistical Summary Table +#' +#' @description Calculates descriptive statistics and returns a formatted `gt` table +#' ready for slide presentation. +#' +#' @param data A data frame or sf object. +#' @return A `gt` table object. +#' +#' @importFrom dplyr select arrange desc any_of where +#' @importFrom sf st_drop_geometry +#' @importFrom psych describe +#' @importFrom tibble rownames_to_column +#' @importFrom gt gt fmt_number cols_label tab_options google_font +#' @export +format_summary_table <- function(data) { + + # 1. Calculate Stats (The Logic) + stats_df <- data %>% + sf::st_drop_geometry() %>% + dplyr::select(dplyr::where(is.numeric)) %>% + dplyr::select(-dplyr::any_of(c("year", "lon", "lat"))) %>% + psych::describe() %>% + as.data.frame() %>% + tibble::rownames_to_column(var = "Variable") %>% + dplyr::select(-vars, -range, -se, -mad) %>% + dplyr::arrange(dplyr::desc(abs(kurtosis))) + + # 2. Format Table (The Presentation) + stats_df %>% + gt::gt() %>% + gt::opt_table_font( + font = gt::google_font("Atkinson Hyperlegible") + ) %>% + # Clean up column labels + gt::cols_label( + Variable = "Variable", + n = "N", + mean = "Mean", + sd = "SD", + median = "Median", + trimmed = "Trimmed", + min = "Min", + max = "Max", + skew = "Skew", + kurtosis = "Kurtosis" + ) %>% + # Format all numbers to 2 decimal places + gt::fmt_number( + columns = dplyr::where(is.numeric), + decimals = 2 + ) %>% + # Format 'N' to 0 decimals + gt::fmt_number( + columns = "n", + decimals = 0 + ) %>% + # Styling: Increase font size and use your project font + gt::tab_options( + table.font.names = "Atkinson Hyperlegible", + table.font.size = "22px", # <--- Increases size to fill the slide + data_row.padding = "8px" # Adds breathing room + ) %>% + gt::text_transform( + locations = gt::cells_body(columns = dplyr::where(is.numeric)), + fn = function(x) { + # \u2212 is the unicode minus that breaks things. Replace with standard "-". + gsub("\u2212", "-", x) + } + ) +} + +#' Plot US Map with Forestry Theme +#' @description Highlights Washington and Georgia using standardized presentation fonts. +#' @importFrom tigris states shift_geometry +#' @importFrom rmapshaper ms_simplify ms_filter_islands +#' @importFrom dplyr filter mutate +#' @importFrom ggplot2 ggplot geom_sf aes scale_fill_manual labs +#' @export +plot_us_map <- function() { + + # 1. Fetch and filter for the Lower 48 + us_map <- tigris::states(cb = TRUE, resolution = "20m", year = 2022, progress_bar = FALSE) %>% + dplyr::filter(!STUSPS %in% c("AK", "HI", "PR")) %>% + rmapshaper::ms_simplify(keep = 0.2) %>% + rmapshaper::ms_filter_islands(min_area = 1e9) %>% + tigris::shift_geometry() %>% + dplyr::mutate( + highlight = dplyr::case_when( + STUSPS == "WA" ~ "Washington", + STUSPS == "GA" ~ "Georgia", + TRUE ~ NA_character_ + ) + ) + + # 2. Define Colors + state_colors <- c("Washington" = "#E16A86", "Georgia" = "#00AD9A") + + # 3. Plot + ggplot2::ggplot() + + # Layer 1: Base Map + ggplot2::geom_sf(data = us_map, fill = "grey98", color = "grey50", linewidth = 0.25) + + + # Layer 2: Highlight Layer + ggplot2::geom_sf( + data = dplyr::filter(us_map, !is.na(highlight)), + ggplot2::aes(fill = highlight), + color = "grey50", + linewidth = 0.25 + ) + + + # Custom Scales + ggplot2::scale_fill_manual(values = state_colors, name = "Study Sites") + + + # Standardized Forestry Theme + theme_forestry_spatial() +} + + +#' Create Single State Topo Plot +#' @description Generates a topo map with manually tuned label placement for Georgia. +#' @export +plot_state_topo <- function(data, boundary_sf, raster_path, state_name) { + + # 1. Load & Process Raster + elev_terra <- terra::rast(raster_path) + slope <- terra::terrain(elev_terra, "slope", unit = "radians") + aspect <- terra::terrain(elev_terra, "aspect", unit = "radians") + hill_terra <- terra::shade(slope, aspect, angle = 45, direction = 315) + + # 2. Prep Vectors + boundary_sf <- sf::st_transform(boundary_sf, 4326) + peaks_sf <- get_state_peaks(state_name) + + # --- FIX: Manual Nudge Logic --- + # Define default nudges (0 means "let ggrepel decide") + nx <- 0 + ny <- 0 + + if (state_name == "Georgia" && !is.null(peaks_sf)) { + # Prepare nudge vectors specific to the Georgia peaks to uncross the lines + # Units are in Decimal Degrees (roughly: 0.1 deg ~ 11km) + peaks_sf <- peaks_sf %>% + dplyr::mutate( + nudge_x = dplyr::case_when( + peak == "Rabun Bald" ~ 0.3, # Push Hard Right (East) + peak == "Blood Mtn" ~ -0.3, # Push Hard Left (West) + peak == "Brasstown Bald" ~ 0, # Keep Center horizontally + TRUE ~ 0 + ), + nudge_y = dplyr::case_when( + peak == "Brasstown Bald" ~ 0.2, # Push Up (North) + peak == "Rabun Bald" ~ -0.1, # Push Down slightly + TRUE ~ 0 + ) + ) + + # Extract as vectors for ggrepel + nx <- peaks_sf$nudge_x + ny <- peaks_sf$nudge_y + } + + # 3. Plot + ggplot2::ggplot() + + tidyterra::geom_spatraster(data = elev_terra) + + tidyterra::scale_fill_hypso_c( + palette = "usgs-gswa2", + name = "Elevation (m)", + na.value = "transparent" + ) + + tidyterra::geom_spatraster( + data = hill_terra, + ggplot2::aes(alpha = ggplot2::after_stat(value)), + fill = "black", + show.legend = FALSE + ) + + ggplot2::scale_alpha(range = c(0.6, 0), guide = "none", na.value = 0) + + ggplot2::geom_sf(data = boundary_sf, fill = NA, color = "black", linewidth = 0.5) + + + # REPEL SETTINGS + {if(!is.null(peaks_sf)) ggrepel::geom_label_repel( + data = peaks_sf, ggplot2::aes(label = peak, geometry = geometry), + stat = "sf_coordinates", + size = 6, + family = "atkinson", + fontface = "bold", + + # Inject the manual nudges here + nudge_x = nx, + nudge_y = ny, + + box.padding = 0.8, + point.padding = 0.5, + force = 10, + min.segment.length = 0 + )} + + + theme_forestry_void(base_size = 16) + + ggplot2::coord_sf(expand = FALSE) + + + ggplot2::guides( + fill = ggplot2::guide_colorbar( + title.position = "top", + title.hjust = 0.5, + barwidth = ggplot2::unit(5, "cm"), + barheight = ggplot2::unit(0.3, "cm"), + frame.colour = "black", + ticks.colour = "black" + ) + ) + + ggplot2::theme( + legend.position = "bottom", + legend.margin = ggplot2::margin(t = 5, b = 0) + ) +} + + +#' Save Combined Side-by-Side Topo Plot +#' @export +save_combined_topo <- function(wa_data, ga_data, wa_boundary, ga_boundary, + wa_raster_path, ga_raster_path, output_path) { + + # [FIX 2] Ensure fonts are registered & showtext is ON for this worker process + setup_forestry_fonts() + + p_wa <- plot_state_topo(wa_data, wa_boundary, wa_raster_path, "Washington") + p_ga <- plot_state_topo(ga_data, ga_boundary, ga_raster_path, "Georgia") + + combined_plot <- patchwork::wrap_plots(p_wa, p_ga, ncol = 2) + + patchwork::plot_annotation( + tag_levels = 'a', + tag_prefix = '(', + tag_suffix = ')', + theme = theme_forestry_void(base_size = 20) + ) + + dir.create(dirname(output_path), showWarnings = FALSE) + + # Save + ggplot2::ggsave(output_path, plot = combined_plot, width = 12, height = 6, dpi = 300, bg = "white") + return(output_path) +} + +#' Plot Regional Comparison of Forested Data (WA vs GA) +#' +#' @description Generates a side-by-side comparison of forest cover for Washington +#' and Georgia. It handles font registration (Atkinson Hyperlegible), spatial +#' transformations, and creates a combined plot with a shared legend. +#' +#' @param data A data frame containing the forest point data. Must contain +#' columns `lon`, `lat`, `state`, and `forested`. +#' @param boundaries An `sf` object containing state boundaries. Must contain +#' a `NAME` column. +#' +#' @return A `patchwork` object containing the combined side-by-side maps. +#' +#' @importFrom sysfonts font_add_google +#' @importFrom showtext showtext_auto +#' @importFrom dplyr filter +#' @importFrom sf st_as_sf st_transform st_crs +#' @importFrom ggplot2 ggplot geom_sf aes scale_color_manual coord_sf guides guide_legend theme_void theme element_text +#' @importFrom patchwork wrap_plots plot_layout plot_annotation +#' +#' @export +plot_regional_comparison <- function(data, boundaries) { + # Load the font from Google Fonts (or a local file) + font_add_google("Atkinson Hyperlegible", family = "atkinson") + + # Turn on showtext to render the font + showtext_auto() + + # Spatial Prep (Fixing the NAD83/WGS84 mismatch) + forest_sf <- data %>% + sf::st_as_sf(coords = c("lon", "lat"), crs = 4326) %>% + sf::st_transform(sf::st_crs(boundaries)) + + state_lookup <- c("Washington" = "WA", "Georgia" = "GA") + # Washington Plot + abbr_wa <- state_lookup["Washington"] + p_wa <- ggplot2::ggplot() + + # State Boundary + ggplot2::geom_sf(data = dplyr::filter(boundaries, NAME == "Washington"), + fill = "grey98", color = "grey80") + + # Forest Points + ggplot2::geom_sf(data = dplyr::filter(forest_sf, state == abbr_wa), + ggplot2::aes(color = forested), alpha = 0.6, size = 0.5) + + # Scales + ggplot2::scale_color_manual(values = c("Yes" = "#228B22", "No" = "#D2691E"), + name = "Forested") + + ggplot2::coord_sf(expand = TRUE) + + # Legend Tweaks + ggplot2::guides(color = ggplot2::guide_legend(override.aes = list(size = 5, alpha = 1))) + + theme_void() + # Georgia Plot + abbr_ga <- state_lookup["Georgia"] + p_ga <- ggplot2::ggplot() + + # State Boundary + ggplot2::geom_sf(data = dplyr::filter(boundaries, NAME == "Georgia"), + fill = "grey98", color = "grey80") + + # Forest Points + ggplot2::geom_sf(data = dplyr::filter(forest_sf, state == abbr_ga), + ggplot2::aes(color = forested), alpha = 0.6, size = 0.5) + + # Scales + ggplot2::scale_color_manual(values = c("Yes" = "#228B22", "No" = "#D2691E"), + name = "Forested") + + ggplot2::coord_sf(expand = TRUE) + + # Legend Tweaks + ggplot2::guides(color = ggplot2::guide_legend(override.aes = list(size = 5, alpha = 1))) + + theme_void() + + # Combine + final_plot <- patchwork::wrap_plots(p_wa, p_ga) + + patchwork::plot_layout(guides = "collect") + + patchwork::plot_annotation( + tag_levels = 'a', + tag_prefix = '(', + tag_suffix = ')' + ) & + ggplot2::theme( + text = element_text(family = "atkinson", size = 16), + legend.position = "bottom" + ) + return(final_plot) +} +#' Download EPA Level III Ecoregions Data +#' +#' @description Downloads the EPA Level III Ecoregions shapefile (zip format) +#' to a local directory. Implements a caching check to avoid re-downloading +#' if the file already exists. +#' +#' @param url Character string. The direct URL to the EPA Ecoregions zip file. +#' @param dest_dir Character string. The local directory where the data should +#' be saved. Defaults to "data/epa". +#' +#' @return A character string containing the full file path to the downloaded zip file. +#' This return value is designed to be tracked by \code{targets}. +#' +#' @importFrom utils download.file +#' @export +get_epa_ecoregions <- function(url, dest_dir = "data/epa") { + # Ensure directory exists + if (!dir.exists(dest_dir)) dir.create(dest_dir, recursive = TRUE) + + # Define destination + dest_file <- file.path(dest_dir, "us_eco_l3.zip") + + # Download only if missing + if (!file.exists(dest_file)) { + message("Downloading EPA Ecoregion Data...") + download.file(url, dest_file, mode = "wb") + } + + # Return the file path for the next target to track + return(dest_file) +} + +#' Process and Clip EPA Ecoregions +#' +#' @description Extracts EPA Level III ecoregion data from a zipped shapefile, +#' standardizes column names, and clips the geometry to specified state boundaries. +#' It includes robust steps for geometry repair (handling spherical validity), +#' small island removal, and simplification for optimized plotting. +#' +#' @param zip_path Character string. The file path to the zipped EPA shapefile. +#' @param target_states Character vector. The names of the states to clip the +#' ecoregions to. Defaults to \code{c("Washington", "Georgia")}. +#' @param simplify_tol Numeric. The simplification tolerance passed to +#' \code{rmapshaper::ms_simplify}. Range is 0-1, where higher numbers remove more detail. +#' Defaults to 0.05. +#' +#' @return An \code{sf} object containing the processed ecoregions with standardized +#' columns \code{US_L3NAME} and \code{STATE_NAME}. +#' +#' @importFrom tigris states +#' @importFrom dplyr filter rename select %>% +#' @importFrom rmapshaper ms_simplify ms_filter_islands +#' @importFrom sf read_sf st_transform st_crs st_make_valid st_intersection sf_use_s2 +#' @importFrom utils unzip +#' @export +process_ecoregions <- function(zip_path, target_states = c("Washington", "Georgia"), simplify_tol = 0.05) { + message("Processing shapefiles for: ", paste(target_states, collapse = ", ")) + + # A. Fetch State Boundaries (The "Cookie Cutter") + boundaries <- tigris::states(cb = TRUE, resolution = "20m", progress_bar = FALSE) %>% + filter(NAME %in% target_states) %>% + # Simplify boundaries to match the ecoregion resolution + rmapshaper::ms_simplify(keep = simplify_tol, keep_shapes = TRUE) + + # B. Unzip and Read EPA Data + clean_dir <- tempfile() + dir.create(clean_dir) + unzip(zip_path, exdir = clean_dir) + + shp_file <- list.files(clean_dir, pattern = "\\.shp$", full.names = TRUE, recursive = TRUE)[1] + eco_raw <- sf::read_sf(shp_file) + + # C. Standardize Columns (Handle variations in column names) + if (!"US_L3NAME" %in% names(eco_raw)) { + if ("NA_L3NAME" %in% names(eco_raw)) { + eco_raw <- rename(eco_raw, US_L3NAME = NA_L3NAME) + } else if ("LEVEL3_NAM" %in% names(eco_raw)) { + eco_raw <- rename(eco_raw, US_L3NAME = LEVEL3_NAM) + } + } + + # D. Clip, Clean, and Simplify + suppressMessages(sf::sf_use_s2(FALSE)) # Turn off spherical geometry for robust clipping + + eco_clean <- eco_raw %>% + st_transform(st_crs(boundaries)) %>% + st_make_valid() %>% + st_intersection(boundaries) %>% + select(US_L3NAME, STATE_NAME = NAME) %>% + rmapshaper::ms_filter_islands(min_area = 200000000) %>% + rmapshaper::ms_simplify(keep = simplify_tol, keep_shapes = TRUE) + + suppressMessages(sf::sf_use_s2(TRUE)) + + return(eco_clean) +} + +#' Plot Ecoregion Complexity Comparison (WA vs GA) +#' +#' @description Generates a side-by-side comparison of Level III ecoregions for Washington +#' and Georgia. It uses a "void" theme, qualitative colors, and carefully tuned +#' label repulsion settings to avoid overlapping text. +#' +#' @param eco_data An \code{sf} object containing ecoregion polygons. Must contain +#' columns \code{STATE_NAME} and \code{US_L3NAME}. +#' +#' @return A \code{patchwork} object containing the combined plot. +#' +#' @importFrom dplyr filter group_by summarize mutate +#' @importFrom sf st_transform st_union st_point_on_surface st_coordinates st_drop_geometry +#' @importFrom stringr str_wrap +#' @importFrom ggplot2 ggplot geom_sf aes coord_sf theme_void scale_fill_discrete guide_none element_text margin element_rect labs +#' @importFrom ggrepel geom_label_repel +#' @importFrom colorspace scale_fill_discrete_qualitative +#' @importFrom patchwork plot_annotation +#' +#' @export +plot_ecoregion_comparison <- function(eco_data) { + + # 1. WASHINGTON PLOT + # A. Filter & Transform + wa_e <- eco_data %>% + dplyr::filter(STATE_NAME == "Washington") %>% + sf::st_transform(4326) + + # B. Calculate Centroids for Labels + wa_labels <- wa_e %>% + dplyr::group_by(US_L3NAME) %>% + dplyr::summarize(geometry = sf::st_union(geometry)) %>% + dplyr::mutate( + lon = sf::st_coordinates(sf::st_point_on_surface(geometry))[, 1], + lat = sf::st_coordinates(sf::st_point_on_surface(geometry))[, 2], + clean_label = stringr::str_wrap(US_L3NAME, width = 35) + ) %>% + sf::st_drop_geometry() + + # C. Generate Plot + p_wa <- ggplot2::ggplot() + + # Geometries + ggplot2::geom_sf(data = wa_e, ggplot2::aes(fill = US_L3NAME), + alpha = 1, color = "white", linewidth = 0.2) + + + ggplot2::coord_sf(datum = NA, expand = TRUE) + + + # Repelled Labels + ggrepel::geom_label_repel( + data = wa_labels, + ggplot2::aes(x = lon, y = lat, label = clean_label), + inherit.aes = FALSE, + size = 5, + family = "atkinson", + lineheight = 1.6, + box.padding = 0.75, + min.segment.length = 0, + force = 30, + max.overlaps = Inf, + alpha = 0.95, + segment.color = "grey30", + segment.size = 1, + seed = 42 + ) + + + # Colors + colorspace::scale_fill_discrete_qualitative(palette = "Dark 3", guide = "none") + + + # Manual Theme + ggplot2::theme_void(base_family = "atkinson") + + + # 2. GEORGIA PLOT + # A. Filter & Transform + ga_e <- eco_data %>% + dplyr::filter(STATE_NAME == "Georgia") %>% + sf::st_transform(4326) + + # B. Calculate Centroids for Labels + ga_labels <- ga_e %>% + dplyr::group_by(US_L3NAME) %>% + dplyr::summarize(geometry = sf::st_union(geometry)) %>% + dplyr::mutate( + lon = sf::st_coordinates(sf::st_point_on_surface(geometry))[, 1], + lat = sf::st_coordinates(sf::st_point_on_surface(geometry))[, 2], + clean_label = stringr::str_wrap(US_L3NAME, width = 35) + ) %>% + sf::st_drop_geometry() + + # C. Generate Plot + p_ga <- ggplot2::ggplot() + + # Geometries + ggplot2::geom_sf(data = ga_e, ggplot2::aes(fill = US_L3NAME), + alpha = 1, color = "white", linewidth = 0.2) + + + ggplot2::coord_sf(datum = NA, expand = TRUE) + + + # Repelled Labels + ggrepel::geom_label_repel( + data = ga_labels, + ggplot2::aes(x = lon, y = lat, label = clean_label), + inherit.aes = FALSE, + size = 5, + family = "atkinson", + lineheight = 1.6, + box.padding = 0.75, + min.segment.length = 0, + force = 40, + max.overlaps = Inf, + alpha = 0.95, + segment.color = "grey30", + segment.size = 1, + seed = 4 + ) + + + # Colors + colorspace::scale_fill_discrete_qualitative(palette = "Dark 3", guide = "none") + + + # Manual Theme + ggplot2::theme_void(base_family = "atkinson") + + ggplot2::theme( + plot.title = ggplot2::element_text(face = "bold", margin = ggplot2::margin(b = 10)), + plot.tag = ggplot2::element_text(face = "bold"), + legend.position = "bottom" + ) + + ggplot2::labs(x = NULL, y = NULL) + + + # 3. COMBINE & ANNOTATE + combined_plot <- (p_wa + p_ga) + + patchwork::plot_annotation( + tag_levels = 'a', + tag_prefix = '(', + tag_suffix = ')' + ) & + # Apply theme settings globally to the patchwork + ggplot2::theme_void(base_family = "atkinson") + + return(combined_plot) +} + + +#' Plot Univariate Distributions by Forest Cover +#' +#' @description Generates a faceted density plot comparing numeric environmental +#' variables between forested and non-forested areas. It uses the "Dark 3" +#' qualitative palette and applys the Wilke cowplot theme. +#' +#' @param data A data frame or sf object containing the forest data. +#' Must include `forested` column and numeric environmental variables. +#' +#' @return A `ggplot` object. +#' +#' @importFrom dplyr select starts_with +#' @importFrom tidyr pivot_longer +#' @importFrom ggplot2 ggplot aes geom_density facet_wrap scale_fill_manual labs +#' @importFrom cowplot theme_cowplot +#' @importFrom colorspace qualitative_hcl +#' @importFrom sysfonts font_add_google +#' @importFrom showtext showtext_auto +#' +#' @export +plot_forest_distributions <- function(data) { + + # 1. Typography Setup + sysfonts::font_add_google("Atkinson Hyperlegible", family = "atkinson") + showtext::showtext_auto() + + # 2. Color Palette (Dark 3 from colorspace) + # Generating the hex codes specifically for 2 levels + pal_colors <- colorspace::qualitative_hcl(palette = "Dark 3", n = 2) + + # 3. Plotting + data %>% + dplyr::select( + forested, elevation, eastness, northness, roughness, + dew_temp, precip_annual, + dplyr::starts_with("temp_"), + dplyr::starts_with("vapor_") + ) %>% + tidyr::pivot_longer( + cols = -forested, + names_to = "variable", + values_to = "value" + ) %>% + ggplot2::ggplot(ggplot2::aes(x = value, fill = forested)) + + # color = NA removes the outline for a cleaner "Wilke-style" look + ggplot2::geom_density(alpha = 0.6, color = NA) + + ggplot2::facet_wrap(~ variable, scales = "free") + + + # Scales & Labels + ggplot2::scale_fill_manual(values = pal_colors) + + ggplot2::labs( + x = NULL, + y = "Density", + fill = "Forested" + ) + + ggplot2::scale_y_continuous(expand = ggplot2::expansion(mult = c(0, 0.05))) + + ggplot2::scale_x_continuous( + expand = ggplot2::expansion(mult = c(0, 0)), + labels = scales::label_number(scale_cut = scales::cut_short_scale())) + + + # Theme + cowplot::theme_cowplot(font_family = "atkinson", font_size = 22) + + # Minor tweaks to spacing + ggplot2::theme( + legend.position = "bottom", + strip.background = ggplot2::element_blank(), # Clean facet headers + strip.text = ggplot2::element_text(face = "bold") + ) +} +identify_outliers <- function(data){ + # 1. Prepare the data (calculate Z-scores first) + plot_data <- data %>% + sf::st_drop_geometry() %>% + dplyr::select(forested, where(is.numeric)) %>% + dplyr::select(-any_of(c("lon", "lat", "year"))) %>% + tidyr::pivot_longer(cols = -forested, names_to = "variable", values_to = "value") %>% + dplyr::group_by(variable) %>% + # Wrap scale in as.numeric to fix the matrix warning + dplyr::mutate(scaled_value = as.numeric(scale(value))) %>% + dplyr::ungroup() + + # 2. Plot + ggplot2::ggplot(plot_data, aes(x = forested, y = scaled_value, fill = forested)) + + # Draw the main distribution (suppress default outliers) + ggplot2::geom_boxplot(outlier.shape = NA, alpha = 0.4) + + + # CRITICAL FIX: Only pass the extreme values to the points layer + ggplot2::geom_jitter( + data = dplyr::filter(plot_data, abs(scaled_value) > 3), + width = 0.2, + alpha = 0.6, + size = 1.5 # Make the outliers pop + ) + + + ggplot2::facet_wrap(~variable, scales = "free_y") + + ggplot2::theme_minimal() + + ggplot2::scale_fill_manual(values = c("Yes" = "#228B22", "No" = "#D2691E")) + + ggplot2::labs( + title = "Standardized Distribution & Extremes", + subtitle = "Points indicate observations > 3 Standard Deviations from mean", + y = "Z-Score (σ)" + ) +} + +fetch_study_area <- function(target_states) { + tigris::states(cb = TRUE, resolution = "20m", progress_bar = FALSE) %>% + dplyr::filter(NAME %in% target_states) %>% + rmapshaper::ms_simplify(keep = 0.2, keep_shapes = TRUE) +} + +fetch_state_boundary <- function(state){ + tigris::states(cb = TRUE, resolution = "20m", progress_bar = FALSE) %>% + dplyr::filter(NAME == state) %>% + rmapshaper::ms_simplify(keep = 0.2, keep_shapes = TRUE) +} + +create_elevation_raster <- function(boundary_sf, path) { + elev_raster <- elevatr::get_elev_raster(locations = boundary_sf, z = 7, clip = "locations") + elev_terra <- terra::rast(elev_raster) %>% terra::mask(terra::vect(boundary_sf)) + terra::writeRaster(elev_terra, path, overwrite = TRUE) + return(path) +} +#' Save Outlier Diagnostic Map +#' +#' @description Generates a diagnostic map highlighting multivariate outliers (Z > 3) +#' overlaid on a hillshaded elevation raster. Uses the standardized forestry theme. +#' +#' @param data A data frame containing the analysis dataset (must include numeric columns and 'forested' factor). +#' @param boundary_sf An \code{sf} object representing the state boundary (e.g., Washington). +#' @param raster_path Character string. File path to the elevation raster (.tif). +#' @param output_path Character string. File path where the PNG will be saved. +#' +#' @importFrom terra rast terrain shade +#' @importFrom sf st_transform st_as_sf st_filter st_drop_geometry +#' @importFrom dplyr select filter if_any all_of mutate +#' @importFrom tibble tibble +#' @importFrom ggplot2 ggplot geom_sf aes after_stat scale_alpha scale_color_manual labs ggsave guides guide_legend +#' @importFrom tidyterra geom_spatraster scale_fill_hypso_c +#' @importFrom ggrepel geom_label_repel +#' +#' @return The \code{output_path} (invisible), for integration with \code{targets}. +#' @export +save_outlier_map_png <- function(data, boundary_sf, raster_path, output_path) { + + # 1. Load & Process Raster + elev_terra <- terra::rast(raster_path) + slope <- terra::terrain(elev_terra, "slope", unit = "radians") + aspect <- terra::terrain(elev_terra, "aspect", unit = "radians") + hill_terra <- terra::shade(slope, aspect, angle = 45, direction = 315) + + # 2. Prep Vectors + wa_boundary_sf <- sf::st_transform(boundary_sf, 4326) + + data_sf <- data %>% + sf::st_as_sf(coords = c("lon", "lat"), crs = 4326) %>% + sf::st_filter(wa_boundary_sf) + + # Identify numeric columns automatically + numeric_cols <- data_sf %>% + sf::st_drop_geometry() %>% + dplyr::select(where(is.numeric)) %>% + names() + + # Filter for >3 Z-score + outliers_sf <- data_sf %>% + dplyr::filter(dplyr::if_any(dplyr::all_of(numeric_cols), ~ abs(scale(.)) > 3)) + + # WA Peak Labels + wa_peaks_sf <- tibble::tibble( + peak = c("Mt. Rainier", "Mt. Adams", "Mt. Baker", "Glacier Peak", "Mt. St. Helens", "Mt. Olympus"), + lat = c(46.8523, 46.2024, 48.7767, 48.1125, 46.1914, 47.8013), + lon = c(-121.7603, -121.4909, -121.8132, -121.1139, -122.1956, -123.7111) + ) %>% + sf::st_as_sf(coords = c("lon", "lat"), crs = 4326) + + # 3. Plot + plt <- ggplot2::ggplot() + + # Layer A: Elevation Color + tidyterra::geom_spatraster(data = elev_terra) + + tidyterra::scale_fill_hypso_c(palette = "usgs-gswa2", name = "Elevation", na.value = "transparent") + + + # Layer B: Hillshade Shadow Mask + tidyterra::geom_spatraster( + data = hill_terra, + ggplot2::aes(alpha = ggplot2::after_stat(value)), + fill = "black", + show.legend = FALSE + ) + + ggplot2::scale_alpha(range = c(0.6, 0), guide = "none", na.value = 0) + + + # Layer C: Vectors (Boundary + Outlier Points) + ggplot2::geom_sf(data = wa_boundary_sf, fill = NA, color = "black", linewidth = 0.5) + + ggplot2::geom_sf(data = outliers_sf, ggplot2::aes(color = forested), size = 2.5) + + ggplot2::scale_color_manual(values = c("Yes" = "#228B22", "No" = "#D2691E")) + + + # Layer D: Labels + ggrepel::geom_label_repel( + data = wa_peaks_sf, + ggplot2::aes(label = peak, geometry = geometry), + stat = "sf_coordinates", + size = 5, + fontface = "bold", + box.padding = 0.6, + min.segment.length = 0 + ) + + + # Theme Application + theme_forestry_spatial() + + labs(x = "", y = "") + + # Save + ggplot2::ggsave(output_path, plot = plt, width = 10, height = 6, dpi = 300, bg = "white") + return(output_path) +} + +plot_wa_pca <- function(data) { + # REVISED: Keep Lat/Lon in the numeric matrix + numeric_mat <- data %>% + sf::st_drop_geometry() %>% + dplyr::select(where(is.numeric)) %>% + dplyr::select(-any_of(c("year"))) + + pca_res <- stats::prcomp(numeric_mat, scale. = TRUE) + + # Calculate variance + var_exp <- round(100 * pca_res$sdev^2 / sum(pca_res$sdev^2), 1) + + # Calculate the sum for the reader + total_var <- var_exp[1] + var_exp[2] + + as.data.frame(pca_res$x) %>% + dplyr::mutate(forested = data$forested) %>% + ggplot2::ggplot(aes(x = PC1, y = PC2, color = forested)) + + ggplot2::geom_point(alpha = 0.5) + + ggplot2::scale_color_manual(values = c("Yes" = "#2D5A27", "No" = "#A0522D")) + + ggplot2::theme_minimal(base_size = 14) + + ggplot2::labs( + title = "PCA: Biophysical + Geography", + # REVISED SUBTITLE: Sums it up cleanly + subtitle = paste0("First two components capture ", total_var, "% of total variance"), + x = paste0("PC1 (", var_exp[1], "%)"), + y = paste0("PC2 (", var_exp[2], "%)") + ) + + ggplot2::scale_x_continuous(limits = c(-10, 5)) +} + +plot_correlations <- function(data) { + # 1. Data Prep (Same as before) + cor_data <- data %>% + sf::st_drop_geometry() %>% + dplyr::mutate(Forested_Binary = dplyr::if_else(forested == "Yes", 1, 0)) %>% + dplyr::select(Forested_Binary, dplyr::where(is.numeric)) %>% + dplyr::select(-any_of(c("year"))) + + cor_df <- cor(cor_data, use = "pairwise.complete.obs") %>% + as.data.frame() %>% + dplyr::select(correlation = Forested_Binary) %>% + tibble::rownames_to_column("variable") %>% + dplyr::filter(variable != "Forested_Binary") %>% + dplyr::mutate( + sign = dplyr::if_else(correlation > 0, "Positive", "Negative"), + is_spatial = dplyr::if_else(variable %in% c("lat", "lon"), "Spatial", "Biophysical") + ) + + # 2. Plot with SPACE + ggplot2::ggplot(cor_df, aes(x = reorder(variable, correlation), y = correlation)) + + ggplot2::geom_segment(aes(xend = variable, yend = 0), color = "gray50") + + ggplot2::geom_point(aes(color = sign, shape = is_spatial), size = 5) + + + ggplot2::coord_flip() + + ggplot2::theme_minimal(base_size = 18) + + + ggplot2::scale_color_manual(values = c("Positive" = "#228B22", "Negative" = "#D2691E")) + + + ggplot2::labs( + title = "What drives the 'Forested' classification?", + subtitle = "Correlations with Forested (Yes=1). Note the impact of Latitude.", + x = NULL, + y = "Correlation Coefficient", + color = "Direction", + shape = "Variable Type" + ) +} + +#' Plot Random Forest Variable Importance +#' +#' @description Fits a ranger Random Forest model to the provided data, calculates +#' permutation importance, and generates a lollipop chart. It distinguishes +#' between spatial (lat/lon) and biophysical predictors. +#' Uses the project's 'Atkinson' font theme via theme_forestry_plot(). +#' +#' @param data An sf object or data frame containing the 'forested' target and predictors. +#' +#' @importFrom ranger ranger +#' @importFrom vip vi +#' @importFrom sf st_drop_geometry +#' @importFrom dplyr select mutate if_else any_of where +#' @importFrom ggplot2 ggplot aes geom_segment geom_point scale_shape_manual scale_color_manual labs +#' @export +plot_rf_importance <- function(data) { + + # 1. Clean Data & Fit Model + model_data <- data %>% + sf::st_drop_geometry() %>% + dplyr::select(forested, dplyr::where(is.numeric)) %>% + dplyr::select(-dplyr::any_of(c("year"))) %>% + dplyr::mutate(forested = as.factor(forested)) + + rf_model <- ranger::ranger( + formula = forested ~ ., + data = model_data, + importance = "permutation", + seed = 123 + ) + + # 2. Extract importance & Add Spatial Flag + imp_df <- vip::vi(rf_model) %>% + dplyr::mutate( + Type = dplyr::if_else(Variable %in% c("lat", "lon"), "Spatial", "Biophysical") + ) + + # 3. Tufte-style Lollipop with Shapes + ggplot2::ggplot(imp_df, ggplot2::aes(x = Importance, y = reorder(Variable, Importance))) + + # Stems + ggplot2::geom_segment(ggplot2::aes(xend = 0, yend = Variable), color = "gray60", linewidth = 0.8) + + + # Dots (Mapped to Shape) + ggplot2::geom_point( + ggplot2::aes(shape = Type, color = Type), + size = 5 + ) + + + # --- VISUAL MAPPING --- + ggplot2::scale_shape_manual(values = c("Biophysical" = 16, "Spatial" = 17)) + + ggplot2::scale_color_manual(values = c("Biophysical" = "#228B22", "Spatial" = "black")) + + + # --- THEME FIX --- + # We use your custom theme, which now enforces Atkinson fonts. + # turning off grid because lollipops look cleaner without it + theme_forestry_plot(font_size = 16, grid = FALSE) + + + ggplot2::labs( + title = "Random Forest Variable Importance", + subtitle = "Permutation Importance. Note the high rank of spatial variables.", + y = NULL, + x = "Importance (Loss in Accuracy if scrambled)", + shape = "Variable Type", + color = "Variable Type" + ) +} +plot_umap_forested <- function(data) { + + data_clean <- data %>% + drop_na() + + numeric_data <- data_clean %>% + select(where(is.numeric)) %>% + scale() + + set.seed(42) + umap_fit <- umap::umap(numeric_data) + + # Format for plotting + umap_df <- umap_fit$layout %>% + as.data.frame() %>% + dplyr::rename(UMAP1 = V1, UMAP2 = V2) %>% + dplyr::mutate(forested = as.factor(data_clean$forested)) + + # Generate Plot + ggplot(umap_df, aes(x = UMAP1, y = UMAP2, color = forested)) + + geom_point(alpha = 0.6, size = 1.5) + + #scale_color_viridis_d(name = "Forested Status", begin = 0.2, end = 0.8) + + scale_color_manual( + name = "Forested?", + # Assumes factor order is (No, Yes). Swap colors if order differs. + values = c("#228B22", "#D2691E") + ) + + theme_minimal() + + labs( + title = "UMAP Projection of Forested Areas", + subtitle = "Clustering based on numeric landscape features", + x = "UMAP Dimension 1", + y = "UMAP Dimension 2" + ) +} + +plot_cv_strategies <- function(data) { + + # 1. SETUP DATA & ADD ID + # We MUST add an ID column to track rows across splits + forested_sf <- st_as_sf( + data, + coords = c("lon", "lat"), + crs = 4326, + remove = FALSE + ) %>% + mutate(id = row_number()) # <--- Critical: Adds the ID we need later + + # 2. DEFINE CUSTOM ECOLOGICAL DISTANCE + dist_env <- function(x) { + x %>% + st_drop_geometry() %>% + select(elevation, precip_annual, temp_annual_mean, roughness) %>% + scale() %>% + dist() + } + + # 3. CREATE THE SPLITS + set.seed(42) + + # A. Random + random_folds <- vfold_cv(forested_sf, v = 5) + + # B. Spatial Block + spatial_folds <- spatial_block_cv(forested_sf, v = 5) + + # C. Environmental Clustering + cluster_folds <- spatial_clustering_cv( + forested_sf, + v = 5, + cluster_function = "hclust", + distance_function = dist_env + ) + + # 4. HELPER: EXTRACT FOLD IDs + # This assigns a Fold Number (1-5) to every single point + get_fold_ids <- function(splits, original_data) { + results <- original_data %>% + mutate(fold = NA_character_) + + for(i in seq_along(splits$splits)) { + test_ids <- assessment(splits$splits[[i]]) %>% pull(id) + results <- results %>% + mutate(fold = ifelse(id %in% test_ids, as.character(i), fold)) + } + return(results) + } + + # 5. PREPARE PLOTTING DATA + df_random <- get_fold_ids(random_folds, forested_sf) + df_spatial <- get_fold_ids(spatial_folds, forested_sf) + df_cluster <- get_fold_ids(cluster_folds, forested_sf) + + # 6. COMMON PLOT FUNCTION + plot_folds <- function(df, title) { + ggplot(df) + + geom_sf(aes(color = fold), size = 0.5, alpha = 0.6) + + scale_color_brewer(palette = "Set1", name = "Fold") + # <--- The Rainbow Colors + #scale_color_discrete_qualitative(palette = "Harmonic", name = "Fold") + + #scale_color_discrete_qualitative(palette = "Dark 3", name = "Fold") + + #scale_color_discrete_qualitative(palette = "Dynamic", name = "Fold") + + ggtitle(title) + + theme_void() + + theme( + plot.title = element_text(hjust = 0.5, face = "bold", size = 12), + legend.position = "none" + ) + } + + # 7. GENERATE & COMBINE + p1 <- plot_folds(df_random, "Random\n(Confetti)") + p2 <- plot_folds(df_spatial, "Spatial Block\n(Checkerboard)") + p3 <- plot_folds(df_cluster, "Env. Clustering\n(Ecoregions)") + + p1 + p2 + p3 + plot_layout(ncol = 3) +} + +plot_spatial_cv_comparison <- function(res_random, res_block, res_cluster) { + + # 1. Extract & Clean Data + all_metrics <- bind_rows( + res_random %>% collect_metrics() %>% mutate(strategy = "Random CV"), + res_block %>% collect_metrics() %>% mutate(strategy = "Block CV"), + res_cluster %>% collect_metrics() %>% mutate(strategy = "Cluster CV") + ) %>% + filter(.metric == "roc_auc") %>% + mutate( + recipe_label = case_when( + str_detect(wflow_id, "^base") ~ "Coords", + str_detect(wflow_id, "^non_spatial") ~ "No Coords", + str_detect(wflow_id, "^extensible") ~ "Extensible", + TRUE ~ "Unknown" + ), + model = str_remove(wflow_id, "(base_|non_spatial_|extensible_)"), + strategy = factor(strategy, levels = c("Random CV", "Block CV", "Cluster CV")), + recipe_label = factor(recipe_label, levels = c("Coords", "No Coords", "Extensible")) + ) + + # 2. Generate Plot + ggplot(all_metrics, aes(x = model, y = mean, color = model)) + + geom_hline(yintercept = 0.96, linetype = "dashed", color = "gray50", alpha = 0.5) + + geom_point(size = 4) + + geom_errorbar(aes(ymin = mean - std_err, ymax = mean + std_err), width = 0.2) + + scale_color_discrete_qualitative(palette = "Dark 3") + + facet_grid(recipe_label ~ strategy) + + scale_y_continuous(labels = scales::number_format(accuracy = 0.01), + limits = c(.65, 1)) + + labs( + y = "ROC AUC Score", + x = "Model Type", + color = "Model" + ) + + theme_bw(base_size = 14) + + theme( + legend.position = "none", + panel.grid.minor = element_blank(), + strip.text = element_text(face = "bold", size = 10) + ) +} +plot_spatial_vip_comparison <- function(res_random, res_block, res_cluster, model_id = "base_rf") { + + # Internal helper to extract VIP from the best fold + get_best_fold_vip <- function(wflow_obj, strategy_name) { + + # 1. Extract results for the specific model ID (e.g., "base_rf") + resample_results <- wflow_obj %>% extract_workflow_set_result(model_id) + + # 2. Find the best fold + best_fold_id <- resample_results %>% + collect_metrics(summarize = FALSE) %>% + filter(.metric == "roc_auc") %>% + slice_max(.estimate, n = 1) %>% + slice(1) %>% + pull(id) + + # 3. Get the split object for that fold + best_split <- resample_results$splits[[which(resample_results$id == best_fold_id)]] + + # 4. Refit and calculate Importance + wflow_obj %>% + extract_workflow(model_id) %>% + finalize_workflow(select_best(resample_results, metric = "roc_auc")) %>% + fit(data = analysis(best_split)) %>% + extract_fit_parsnip() %>% + vi() %>% + mutate(strategy = strategy_name) + } + + # Consolidate and clean + vip_data <- bind_rows( + get_best_fold_vip(res_random, "Random CV"), + get_best_fold_vip(res_block, "Block CV"), + get_best_fold_vip(res_cluster, "Cluster CV") + ) %>% + # Filter ONLY for Lat/Lon (The interaction term doesn't exist in your new recipe) + filter(Variable %in% c("lat", "lon")) %>% + mutate( + Variable = case_when( + Variable == "lon" ~ "Longitude", + Variable == "lat" ~ "Latitude", + TRUE ~ Variable + ), + strategy = factor(strategy, levels = c("Cluster CV", "Block CV", "Random CV")) + ) + + # Generate Plot + ggplot(vip_data, aes(x = Importance, y = strategy)) + + geom_segment(aes(x = 0, xend = Importance, y = strategy, yend = strategy), + color = "gray20", linewidth = .65) + + geom_point(aes(color = strategy), size = 5, show.legend = FALSE) + + facet_grid(Variable ~ ., scales = "free_y", space = "free_y", switch = "y") + + scale_color_discrete_qualitative(palette = "Dark 3") + + scale_x_continuous(expand = c(0, 0)) + # Removed fixed limit (105) to let it scale automatically + labs( + title = paste("Spatial Overfitting Check:", model_id), + subtitle = "Does the model rely on coordinates?", + x = "Importance Score (Impurity)", + y = NULL + ) + + theme_classic(base_size = 14) + + theme( + panel.grid.minor = element_blank() + ) +} +# vvv ADD THIS vvv +plot_model_stability <- function(res_random, res_block, res_cluster, model_id) { + + # Internal helper to extract per-fold metrics + extract_fold_metrics <- function(wflow_obj, strategy_name) { + wflow_obj %>% + extract_workflow_set_result(id = model_id) %>% # <--- Now this works + collect_metrics(summarize = FALSE) %>% + filter(.metric == "roc_auc") %>% + mutate(strategy = strategy_name) + } + + # Combine and factorize + all_fold_metrics <- bind_rows( + extract_fold_metrics(res_random, "Random CV"), + extract_fold_metrics(res_block, "Block CV"), + extract_fold_metrics(res_cluster, "Cluster CV") + ) %>% + mutate(strategy = factor(strategy, levels = c("Random CV", "Block CV", "Cluster CV"))) + + # Generate Plot + ggplot(all_fold_metrics, aes(x = strategy, y = .estimate, color = strategy)) + + geom_violin(alpha = 0.4, outlier.shape = NA, width = 0.5) + + geom_jitter(width = 0.1, size = 3, alpha = 0.8) + + scale_fill_discrete_qualitative(palette = "Dark 3") + + scale_color_discrete_qualitative(palette = "Dark 3") + + scale_y_continuous(limits = c(0.80, 1.0), breaks = seq(0.80, 1.0, 0.05)) + + labs( + title = paste("Stability Analysis:", model_id), # <--- Helpful title + x = NULL, + y = "ROC AUC (per fold)", + caption = "" + ) + + theme_classic(base_size = 14) + + theme( + legend.position = "none" + ) +} +plot_final_test_results <- function(final_fit_obj) { + final_metrics <- final_fit_obj %>% + collect_metrics() %>% + filter(.metric %in% c("roc_auc", "accuracy")) %>% + mutate( + .metric = case_when( + .metric == "roc_auc" ~ "ROC AUC", + .metric == "accuracy" ~ "Accuracy", + TRUE ~ .metric + ) + ) + + ggplot(final_metrics, aes(x = .metric, y = .estimate, fill = .metric)) + + geom_col(width = 0.6, show.legend = FALSE) + + geom_text(aes(label = round(.estimate, 3)), vjust = -0.5, size = 5, fontface = "bold") + + scale_fill_manual(values = c("ROC AUC" = "#2c3e50", "Accuracy" = "#18bc9c")) + + scale_y_continuous(limits = c(0, 1.1), breaks = seq(0, 1, 0.2), expand = c(0, 0)) + + labs( + x = NULL, + y = "Performance Score", + caption = "Evaluation based on the 20% held-out Washington Test Set." + ) + + theme_classic(base_size = 14) + + theme(axis.text.x = element_text(face = "bold", size = 12)) +} + +plot_final_confusion_matrix <- function(final_fit_obj) { + # Extract the predictions from the last_fit object + preds <- final_fit_obj %>% collect_predictions() + + # Generate the confusion matrix + cm <- preds %>% + conf_mat(truth = forested, estimate = .pred_class) + + # Convert to a tidy format for plotting + autoplot(cm, type = "heatmap") + + scale_fill_gradient(low = "#ebf5fb", high = "#2980b9") + + theme_minimal(base_size = 14) + + theme( + panel.grid = element_blank(), + axis.text = element_text(face = "bold"), + plot.title = element_text(face = "bold"), + legend.position = "none" + ) +} + +plot_fold_mechanics <- function(wa_sf, boundary_wa_sf) { + # 1. SETUP + set.seed(42) + + # Ensure unique_id exists to prevent the "object not found" error + if(!"unique_id" %in% names(wa_sf)) { + wa_sf <- wa_sf %>% mutate(unique_id = row_number()) + } + + # 2. DEFINE CUSTOM DISTANCE + dist_env <- function(x) { + x %>% + st_drop_geometry() %>% + select(elevation, precip_annual, temp_annual_mean, roughness) %>% + scale() %>% + dist() + } + + # 3. CREATE SPLITS + random_folds <- vfold_cv(wa_sf, v = 5) + spatial_folds <- spatial_block_cv(wa_sf, v = 5) + cluster_folds <- spatial_clustering_cv(wa_sf, v = 5, cluster_function = "hclust", distance_function = dist_env) + + # 4. HELPER: EXTRACT STATUS + get_status <- function(split_obj) { + first_split <- split_obj$splits[[1]] + assessment_ids <- assessment(first_split) %>% pull(unique_id) + wa_sf %>% + mutate(status = if_else(unique_id %in% assessment_ids, "Assessment (Test)", "Analysis (Train)")) + } + + df_r <- get_status(random_folds) + df_s <- get_status(spatial_folds) + df_c <- get_status(cluster_folds) + + # 5. PLOTTER WITH BOUNDARY LAYER + plot_one <- function(df, title) { + ggplot() + + # Layer 1: The state boundary provides the spatial context + geom_sf(data = boundary_wa_sf, fill = "gray98", color = "gray85") + + # Layer 2: The actual data points + geom_sf(data = df, aes(color = status), size = 0.4, alpha = 0.7) + + scale_color_manual(values = c("Assessment (Test)" = "#E16A86", "Analysis (Train)" = "#606060")) + + ggtitle(title) + + theme_void() + + theme( + legend.position = "none", + plot.title = element_text(hjust = 0.5, face = "bold", size = 10) + ) + } + + # 6. COMBINE + (plot_one(df_r, "Random\n(Confetti)") + + plot_one(df_s, "Spatial\n(Checkerboard)") + + plot_one(df_c, "Env. Clustering\n(Ecoregions)")) + + plot_layout(ncol = 3, guides = "collect") & + theme(legend.position = 'bottom', legend.title = element_blank()) +} + +plot_classic_kfold_diagram <- function(){ + library(tidyverse) + + # 1. Setup Parameters + N_obs <- 100 + K_folds <- 5 + + # 2. Create Mock Data and Assign Folds + set.seed(42) + base_data <- tibble( + obs_id = 1:N_obs, + assigned_fold_group = sample(rep(1:K_folds, length.out = N_obs)) + ) + + # 3. Expand Data for Plotting (Cross-Join) + plot_data <- expand_grid( + obs_id = 1:N_obs, + iteration = 1:K_folds + ) %>% + left_join(base_data, by = "obs_id") %>% + # Define Status: If the iteration matches the assigned fold group, it's Test data. + mutate( + status = case_when( + iteration == assigned_fold_group ~ "Assessment (20%)", + TRUE ~ "Analysis (80%)" + ), + # Convert iteration to factor and reverse levels so Fold 1 is at the top of plot + iteration_fct = factor(iteration, levels = rev(1:K_folds)) + ) + + # 4. Define Colors + cv_colors <- c( + "Analysis (80%)" = "#A6CEE3", + "Assessment (20%)" = "#FDB462" + ) + + # 5. Generate the Plot + ggplot(plot_data, aes(x = obs_id, y = iteration_fct, fill = status)) + + geom_tile(color = "white", linewidth = 0.2) + + scale_fill_manual(values = cv_colors, name = "Data Role") + + labs( + x = "Observations", + y = "Folds" + ) + + + # Theme adjustments + theme_minimal(base_size = 16) + + theme( + panel.grid = element_blank(), + axis.text.x = element_blank(), + axis.ticks.x = element_blank(), + legend.position = "bottom" + ) +} +create_performance_table <- function(results_cluster, final_fit_results) { + require(dplyr) + require(gt) + require(tidymodels) + + # 1. Extract the WINNING Model Info (Name & Score) + best_model_info <- results_cluster %>% + rank_results(rank_metric = "roc_auc", select_best = TRUE) %>% + filter(.metric == "roc_auc") %>% + slice(1) # Grab the #1 spot + + # Get the dynamic name and score + best_model_name <- best_model_info$wflow_id + cv_score <- best_model_info$mean + + # 2. Extract the Final Test Set Scores + test_scores <- final_fit_results %>% + collect_metrics() %>% + select(.metric, .estimate) %>% + tidyr::pivot_wider(names_from = .metric, values_from = .estimate) + + # 3. Create the Combined Data Frame + summary_data <- tibble( + # FIXED: Uses the actual winner's name instead of hardcoded text + Model = best_model_name, + `Validation AUC` = cv_score, + `Test AUC` = test_scores$roc_auc, + `Test Accuracy` = test_scores$accuracy + ) + + # 4. Render with gt + summary_data %>% + gt() %>% + tab_header( + title = md("**Final Model Performance**"), + subtitle = paste("Winner:", best_model_name) + ) %>% + fmt_number( + columns = where(is.numeric), + decimals = 3 + ) %>% + cols_align( + align = "center", + columns = where(is.numeric) + ) %>% + tab_footnote( + footnote = "Mean ROC AUC across spatial cross-validation folds.", + locations = cells_column_labels(columns = `Validation AUC`) + ) %>% + tab_footnote( + footnote = "Evaluated on the 20% independent Washington holdout set.", + locations = cells_column_labels(columns = contains("Test")) + ) %>% + tab_options( + table.border.top.color = "white", + table.border.bottom.color = "black", + column_labels.font.weight = "bold" + ) +} + +plot_yeo_johnson <- function(data) { + # 1. Prepare Recipe & Extract Lambda + rec_yeo <- recipe(~ elevation, data = data) %>% + step_YeoJohnson(elevation) %>% + prep() + + lambda_val <- tidy(rec_yeo, number = 1) %>% + filter(terms == "elevation") %>% + pull(value) %>% + round(2) + + # 2. Create Plotting Data + plot_data <- data %>% + select(elevation) %>% + mutate(type = "Original") %>% + bind_rows( + bake(rec_yeo, new_data = data) %>% + mutate(type = "Transformed") %>% + rename(elevation_trans = elevation) + ) + + # 3. Setup Colors + dark3_cols <- colorspace::qualitative_hcl(2, palette = "Dark 3") + + # 4. Plot A: Original + p1 <- ggplot(filter(plot_data, type == "Original"), aes(x = elevation)) + + geom_density(fill = dark3_cols[1], color = dark3_cols[1], alpha = 0.6, linewidth = 1) + + scale_x_continuous(labels = scales::label_comma(), expand = c(0, 0)) + + scale_y_continuous(expand = c(0, 0)) + + labs(x = "Elevation (m)", y = "Density") + + theme_minimal(base_size = 14) + + theme( + panel.grid.minor = element_blank(), + panel.border = element_rect(color = "black", fill = NA, linewidth = 0.5) + ) + + # 5. Plot B: Transformed + p2 <- ggplot(filter(plot_data, type == "Transformed"), aes(x = elevation_trans)) + + geom_density(fill = dark3_cols[2], color = dark3_cols[2], alpha = 0.6, linewidth = 1) + + scale_x_continuous(labels = scales::label_comma(), expand = c(0, 0)) + + scale_y_continuous(expand = c(0, 0)) + + labs(x = paste0("Yeo-Johnson (Lambda: ", lambda_val, ")"), y = "Density") + + theme_minimal(base_size = 14) + + theme( + panel.grid.minor = element_blank(), + axis.title.y = element_blank(), + axis.text.y = element_blank(), + panel.border = element_rect(color = "black", fill = NA, linewidth = 0.5) + ) + + # 6. Combine + p1 + p2 +} + +#' Save Model Error Diagnostic Map +#' +#' @description Generates a diagnostic map highlighting prediction errors. It plots +#' misclassified points colored by the magnitude of the error (confidence in the wrong answer) +#' over a hillshaded elevation background. +#' +#' @param data A data frame containing model predictions (must include '.pred_class', +#' 'forested', '.pred_Yes', 'lon', and 'lat'). +#' @param boundary_sf An \code{sf} object representing the state boundary. +#' @param raster_path Character string. File path to the elevation raster (.tif). +#' @param output_path Character string. File path where the PNG will be saved. +#' +#' @importFrom terra rast terrain shade +#' @importFrom sf st_transform st_as_sf st_filter +#' @importFrom dplyr filter mutate +#' @importFrom ggplot2 ggplot geom_sf aes after_stat scale_alpha scale_color_viridis_c labs ggsave guides guide_colorbar unit margin +#' @importFrom tidyterra geom_spatraster scale_fill_hypso_c +#' +#' @return The \code{output_path} (invisible), for integration with \code{targets}. +#' @export +save_error_map_png <- function(data, boundary_sf, raster_path, output_path) { + + # 1. Load & Process Hillshade (Standard Setup) + elev_terra <- terra::rast(raster_path) + slope <- terra::terrain(elev_terra, "slope", unit = "radians") + aspect <- terra::terrain(elev_terra, "aspect", unit = "radians") + hill_terra <- terra::shade(slope, aspect, angle = 45, direction = 315) + + # 2. Prep Vectors & Calculate Errors + wa_boundary_sf <- sf::st_transform(boundary_sf, 4326) + + # Filter to ONLY the mistakes and calculate how "wrong" they were + error_sf <- data %>% + # Keep only rows where the Hard Class Prediction was wrong + dplyr::filter(.pred_class != forested) %>% + # Calculate Magnitude: How far was the probability from the truth? + dplyr::mutate( + truth_num = ifelse(forested == "Yes", 1, 0), + error_magnitude = abs(truth_num - .pred_Yes) + ) %>% + sf::st_as_sf(coords = c("lon", "lat"), crs = 4326) %>% + sf::st_filter(wa_boundary_sf) + + # 3. Plot + plt <- ggplot2::ggplot() + + # --- Background Layers --- + tidyterra::geom_spatraster(data = elev_terra) + + tidyterra::scale_fill_hypso_c(palette = "usgs-gswa2", name = "Elevation", na.value = "transparent") + + tidyterra::geom_spatraster(data = hill_terra, ggplot2::aes(alpha = ggplot2::after_stat(value)), fill = "black", show.legend = FALSE) + + ggplot2::scale_alpha(range = c(0.6, 0), guide = "none", na.value = 0) + + ggplot2::geom_sf(data = wa_boundary_sf, fill = NA, color = "black", linewidth = 0.5) + + + # --- The Error Layer --- + ggplot2::geom_sf( + data = error_sf, + ggplot2::aes(color = error_magnitude), + size = 3, + alpha = 0.9 + ) + + ggplot2::scale_color_viridis_c( + option = "plasma", + name = "Error\nConfidence", + limits = c(0.5, 1.0), + direction = -1 + ) + + + # --- Theme Application --- + theme_forestry_spatial() + + ggplot2::labs(x = NULL, y = NULL) + + + # --- Legend Controls (Right Side Vertical) --- + ggplot2::guides( + fill = "none", + color = ggplot2::guide_colorbar( + title.position = "top", + barwidth = ggplot2::unit(0.5, "cm"), # Narrow width + barheight = ggplot2::unit(6, "cm") # Tall height for right side + ) + ) + + ggplot2::theme(legend.position = "right") + + # Save + ggplot2::ggsave(output_path, plot = plt, width = 10, height = 6, dpi = 300, bg = "white") + return(output_path) +} + +#' Calculate Area of Applicability Data +#' +#' @description Generates the Area of Applicability (AOA) scores (Dissimilarity Index) +#' for the Georgia extrapolation dataset based on the Washington training data. +#' +#' @param train_data Dataframe. The training data from Washington. +#' @param test_data Dataframe. The extrapolation data from Georgia. +#' @param predictors Character vector. The list of predictor variable names. +#' +#' @importFrom dplyr select all_of bind_cols +#' @importFrom tibble tibble +#' @importFrom waywiser ww_area_of_applicability +#' @importFrom stats predict +#' @importFrom sf st_as_sf +#' +#' @return An \code{sf} object containing the Georgia data with an added 'di' (Dissimilarity Index) column. +#' @export +calculate_ga_aoa <- function(train_data, test_data, predictors) { + + # 1. Prepare Environments + train_env <- train_data %>% dplyr::select(dplyr::all_of(predictors)) + test_env <- test_data %>% dplyr::select(dplyr::all_of(predictors)) + + # 2. Define "Flat" Importance + importance <- tibble::tibble(term = predictors, estimate = 1) + + # 3. Fit AOA + aoa_model <- waywiser::ww_area_of_applicability( + x = train_env, + importance = importance + ) + + # 4. Predict + aoa_results <- stats::predict(aoa_model, test_env) + + # 5. Return Spatial Object + test_data %>% + dplyr::bind_cols(aoa_results) %>% + sf::st_as_sf(coords = c("lon", "lat"), crs = 4326) +} + +#' Plot Georgia Area of Applicability (AOA) +#' +#' @description Plots the pre-calculated Dissimilarity Index (DI) for Georgia. +#' +#' @param aoa_sf An \code{sf} object containing the 'di' column (output of \code{calculate_ga_aoa}). +#' +#' @importFrom ggplot2 ggplot geom_sf aes scale_color_viridis_c labs guides guide_colorbar unit theme +#' +#' @return A \code{ggplot} object showing the Dissimilarity Index map. +#' @export +plot_georgia_aoa <- function(aoa_sf) { + + ggplot2::ggplot(aoa_sf) + + # Points colored by Dissimilarity Index (DI) + ggplot2::geom_sf(ggplot2::aes(color = di), size = 1, alpha = 0.8) + + + # Color Scale + ggplot2::scale_color_viridis_c( + option = "magma", + direction = 1, + name = "Dissimilarity\nIndex (DI)" + ) + + + # Theme + theme_forestry_spatial() + + ggplot2::labs(x = NULL, y = NULL) + + + # Legend Control + ggplot2::guides( + color = ggplot2::guide_colorbar( + title.position = "top", + barwidth = ggplot2::unit(0.5, "cm"), + barheight = ggplot2::unit(6, "cm") + ) + ) + + ggplot2::theme(legend.position = "right") +} + +# Predict on a new region (External Validation) +predict_external_region <- function(final_fit, new_data) { + wa_model <- final_fit$.workflow[[1]] + + # FIX: Mock ALL columns that were in the training data + # The model expects 'geometry' because training data was an sf object + clean_data <- new_data %>% + dplyr::mutate( + northness = NA_real_, + county = NA_character_, + geometry = NA # Tidymodels will see this exists, then ignore it (as it's not a predictor) + ) + + # Predict Class and Probability + preds <- predict(wa_model, clean_data) %>% + dplyr::bind_cols(predict(wa_model, clean_data, type = "prob")) %>% + dplyr::bind_cols(new_data %>% dplyr::select(lat, lon, forested)) + + return(preds) +} + +#' Plot Georgia Forest Comparison +#' +#' @description Creates a side-by-side comparison of forest cover for Georgia. +#' The left plot (a) is the Model Prediction, and the right plot (b) is the Actual Data. +#' Features a shared right-side legend and standardized spatial styling. +#' +#' @param pred_data Dataframe containing prediction results (columns: .pred_class, forested, lon, lat). +#' @param boundaries An \code{sf} object containing state boundaries (must include "GA" or "Georgia"). +#' +#' @importFrom dplyr filter +#' @importFrom sf st_as_sf st_transform st_crs +#' @importFrom ggplot2 ggplot geom_sf aes scale_color_manual labs theme guides guide_legend element_text +#' @importFrom patchwork plot_layout wrap_plots plot_annotation +#' +#' @return A \code{patchwork} object containing the labeled comparison plot. +#' @export +plot_ga_comparison_map <- function(pred_data, boundaries) { + + # 1. Prepare Data & Boundaries + ga_boundary <- boundaries %>% dplyr::filter(NAME == "Georgia" | NAME == "GA") + + plot_data <- pred_data %>% + sf::st_as_sf(coords = c("lon", "lat"), crs = 4326) %>% + sf::st_transform(sf::st_crs(ga_boundary)) + + # 2. Helper Function (No Title Argument) + create_map <- function(data, fill_col) { + ggplot2::ggplot() + + # Background + ggplot2::geom_sf(data = ga_boundary, fill = "grey98", color = "grey80") + + # Points + ggplot2::geom_sf(data = data, + ggplot2::aes(color = {{ fill_col }}), + size = 0.5, alpha = 0.6) + + # Colors + ggplot2::scale_color_manual( + name = "Forest Cover", + values = c("Yes" = "#228B22", "No" = "#D2691E"), + labels = c("Forest", "Non-Forest") + ) + + # Labels (No Title) + ggplot2::labs(title = NULL, x = NULL, y = NULL) + + + # Theme + theme_forestry_spatial() + + + # Define Legend Here to avoid Patchwork "Order of Ops" Error + ggplot2::guides( + color = ggplot2::guide_legend( + override.aes = list(size = 4, alpha = 1), + title.position = "top", + ncol = 1 + ) + ) + + + ggplot2::theme( + legend.title = ggplot2::element_text(face = "bold", size = 12), + legend.text = ggplot2::element_text(size = 10) + ) + } + + # 3. Create Subplots + p_pred <- create_map(plot_data, .pred_class) # Left: Predicted + p_actual <- create_map(plot_data, forested) # Right: Actual + + # 4. Patchwork Layout with (a)/(b) Tags + combined_plot <- (p_pred + p_actual) + + patchwork::plot_layout(guides = "collect") + + patchwork::plot_annotation( + tag_levels = 'a', + tag_prefix = '(', + tag_suffix = ')', + theme = theme_forestry_spatial() # Ensure tags match font + ) & + ggplot2::theme( + legend.position = "right", + plot.tag = ggplot2::element_text(size = 20, face = "bold") # Make tags prominent + ) + + return(combined_plot) +} +plot_ga_confusion_matrix <- function(pred_data) { + # 1. Generate the confusion matrix object + cm <- pred_data %>% + yardstick::conf_mat(truth = forested, estimate = .pred_class) + + # 2. Plot using autoplot to match the previous style exactly + plt <- ggplot2::autoplot(cm, type = "heatmap") + + + # MATCHED: The exact blue gradient from your previous slide + ggplot2::scale_fill_gradient(low = "#ebf5fb", high = "#2980b9") + + ggplot2::theme_minimal(base_size = 14) + + ggplot2::theme( + panel.grid = ggplot2::element_blank(), + axis.text = ggplot2::element_text(face = "bold"), + plot.title = ggplot2::element_text(face = "bold", hjust = 0.5), # Added hjust for center alignment + legend.position = "none" + ) + + return(plt) +} +#' Plot Failure Mechanism Comparison +#' +#' @description Creates a side-by-side diagnostic plot returning a patchwork object. +#' (a) The Area of Applicability (Dissimilarity Index) showing where the model is extrapolating. +#' (b) The spatial distribution of actual classification errors. +#' +#' @param aoa_data Dataframe containing the AOA results (must have 'di', 'lon', 'lat'). +#' @param pred_data Dataframe containing prediction results (columns: .pred_class, forested, lon, lat). +#' @param boundaries An \code{sf} object containing state boundaries (must include "GA" or "Georgia"). +#' +#' @importFrom dplyr filter mutate case_when +#' @importFrom sf st_as_sf st_transform st_crs +#' @importFrom ggplot2 ggplot geom_sf aes labs theme guides guide_legend guide_colorbar element_rect element_text unit +#' @importFrom colorspace scale_color_discrete_qualitative +#' @importFrom patchwork plot_layout plot_annotation wrap_plots +#' +#' @return A \code{patchwork} object containing the side-by-side comparison. +#' @export +plot_failure_mechanism <- function(aoa_data, pred_data, boundaries) { + + # 1. Prep Boundaries + ga_boundary <- boundaries %>% dplyr::filter(NAME == "Georgia" | NAME == "GA") + target_crs <- sf::st_crs(ga_boundary) + + # 2. Prep Map A: Dissimilarity (Risk) + aoa_sf <- aoa_data %>% + sf::st_as_sf(coords = c("lon", "lat"), crs = 4326) %>% + sf::st_transform(target_crs) + + p_risk <- ggplot2::ggplot() + + ggplot2::geom_sf(data = ga_boundary, fill = "grey98", color = "grey80") + + ggplot2::geom_sf(data = aoa_sf, ggplot2::aes(color = di), size = 0.5, alpha = 0.8) + + ggplot2::scale_color_viridis_c( + option = "magma", + direction = 1, + name = "Dissimilarity Idx." + ) + + ggplot2::labs(x = NULL, y = NULL) + + theme_forestry_spatial() + + ggplot2::guides( + color = ggplot2::guide_colorbar( + title.position = "top", + title.hjust = 0.5, + barwidth = ggplot2::unit(4.5, "cm"), + barheight = ggplot2::unit(.3, "cm") + ) + ) + + ggplot2::theme(legend.position ="bottom") + + # 3. Prep Map B: Failures (Effect) + errors_sf <- pred_data %>% + dplyr::filter(.pred_class != forested) %>% + dplyr::mutate( + error_type = dplyr::case_when( + .pred_class == "Yes" & forested == "No" ~ "False Positive", + .pred_class == "No" & forested == "Yes" ~ "False Negative" + ) + ) %>% + sf::st_as_sf(coords = c("lon", "lat"), crs = 4326) %>% + sf::st_transform(target_crs) + + p_fail <- ggplot2::ggplot() + + ggplot2::geom_sf(data = ga_boundary, fill = "grey98", color = "grey80") + + ggplot2::geom_sf(data = errors_sf, ggplot2::aes(color = error_type), size = 0.6, alpha = 0.6) + + colorspace::scale_color_discrete_qualitative( + palette = "Dark 3", + name = "Error Type" + ) + + ggplot2::labs(x = NULL, y = NULL) + + theme_forestry_spatial() + + ggplot2::guides( + color = ggplot2::guide_legend( + override.aes = list(size = 4, alpha = 1), + title.position = "top", + title.hjust = 0.5 + ) + ) + + ggplot2::theme(legend.position = "bottom") + + # 4. Patchwork Assembly + combined_plot <- (p_risk + p_fail) + + patchwork::plot_layout(guides = "keep") + + patchwork::plot_annotation( + tag_levels = 'a', + tag_prefix = '(', + tag_suffix = ')', + theme = theme_forestry_spatial() + ) & + ggplot2::theme( + plot.tag = ggplot2::element_text(size = 20, face = "bold"), + plot.background = ggplot2::element_rect(fill = "transparent", color = NA) + ) + + return(combined_plot) +} + +#' Plot Annual Rainfall Comparison (Clipped Hexes) +#' +#' @description Creates a polished side-by-side comparison of annual precipitation. +#' Hexagons are spatially generated and clipped to the exact state boundaries +#' to eliminate "bleeding" edges. Uses \code{theme_forestry_void} with explicit +#' font sizing to match topographic maps. +#' +#' @param wa_data Dataframe containing Washington data (requires 'precip_annual', 'lat', 'lon'). +#' @param ga_data Dataframe containing Georgia data (requires 'precip_annual', 'lat', 'lon'). +#' @param boundaries An \code{sf} object containing state boundaries. +#' @param bins Integer. Number of hexes across the state width. Default is 30. +#' @param max_limit Numeric. The visual cap for rainfall (mm) to ensure comparable scales. Default is 2500. +#' +#' @importFrom dplyr filter mutate group_by summarize inner_join row_number +#' @importFrom sf st_as_sf st_transform st_crs st_make_grid st_intersection st_join st_drop_geometry +#' @importFrom ggplot2 ggplot geom_sf aes scale_fill_distiller guide_colorbar unit theme element_text element_rect margin coord_sf rel +#' @importFrom scales squish +#' @importFrom patchwork plot_layout plot_annotation +#' +#' @return A \code{patchwork} object containing the side-by-side comparison. +#' @export +plot_precip_hex_comparison <- function(wa_data, ga_data, boundaries, bins = 30, max_limit = 2500) { + + # 1. Clean Data + wa_clean <- wa_data %>% + dplyr::filter(!is.na(precip_annual)) %>% + dplyr::mutate(precip_annual = as.numeric(precip_annual)) + + ga_clean <- ga_data %>% + dplyr::filter(!is.na(precip_annual)) %>% + dplyr::mutate(precip_annual = as.numeric(precip_annual)) + + # 2. Helper: Generate Clipped Hex Grid + get_clipped_hex_layer <- function(point_data, boundary_sf, n_bins) { + target_crs <- sf::st_crs(boundary_sf) + points_sf <- sf::st_as_sf(point_data, coords = c("lon", "lat"), crs = 4326) %>% + sf::st_transform(target_crs) + + grid <- sf::st_make_grid(boundary_sf, n = n_bins, square = FALSE, flat_topped = TRUE) %>% + sf::st_as_sf() %>% + dplyr::mutate(hex_id = dplyr::row_number()) + + grid_clipped <- sf::st_intersection(grid, boundary_sf) + joined <- sf::st_join(points_sf, grid_clipped, join = sf::st_within) + + hex_summary <- joined %>% + dplyr::filter(!is.na(hex_id)) %>% + dplyr::group_by(hex_id) %>% + dplyr::summarize(precip_mean = mean(precip_annual, na.rm = TRUE)) + + final_layer <- grid_clipped %>% + dplyr::inner_join(sf::st_drop_geometry(hex_summary), by = "hex_id") + + return(final_layer) + } + + # 3. Process States + wa_bnd <- boundaries %>% dplyr::filter(NAME == "Washington" | NAME == "WA") + ga_bnd <- boundaries %>% dplyr::filter(NAME == "Georgia" | NAME == "GA") + + wa_hex_sf <- get_clipped_hex_layer(wa_clean, wa_bnd, bins) + ga_hex_sf <- get_clipped_hex_layer(ga_clean, ga_bnd, bins) + + # 4. Plotting Helper + plot_hex_sf <- function(hex_data, boundary_sf) { + ggplot2::ggplot() + + ggplot2::geom_sf(data = hex_data, ggplot2::aes(fill = precip_mean), color = NA) + + ggplot2::geom_sf(data = boundary_sf, fill = NA, color = "black", linewidth = 0.5) + + + # [CRITICAL] Removes grid lines (datum=NA) and removes padding (expand=FALSE) + ggplot2::coord_sf(datum = NA, expand = FALSE) + + + ggplot2::scale_fill_distiller( + palette = "Blues", + direction = 1, + limits = c(0, max_limit), + oob = scales::squish, + name = "Mean Annual Precip (mm)", + guide = ggplot2::guide_colorbar( + title.position = "top", + title.hjust = 0.5, + barwidth = ggplot2::unit(8, "cm"), + barheight = ggplot2::unit(0.4, "cm"), + frame.colour = "black", + ticks.colour = "black" + ) + ) + + # Use Base Size 16 to match Topo Plot + theme_forestry_void(base_size = 16) + + ggplot2::theme(legend.position = "none") + } + + p_wa <- plot_hex_sf(wa_hex_sf, wa_bnd) + p_ga <- plot_hex_sf(ga_hex_sf, ga_bnd) + + # 5. Patchwork Assembly + combined_plot <- (p_wa + p_ga) + + patchwork::plot_layout(guides = "collect") + + patchwork::plot_annotation( + tag_levels = 'a', tag_prefix = '(', tag_suffix = ')' + ) & + # Ensure the combined plot also uses base_size 16 + theme_forestry_void(base_size = 28) + + return(combined_plot) +} + +#' Get Major Peaks for Plotting +#' +#' Internal helper to return peak locations for WA and GA. +#' +#' @param state_name String. Either "Washington" or "Georgia". +#' @return An sf object containing peak names and locations. +#' +#' @importFrom tibble tibble +#' @importFrom sf st_as_sf +#' @noRd +get_state_peaks <- function(state_name) { + if (state_name == "Washington") { + tibble::tibble( + peak = c("Mt. Rainier", "Mt. Adams", "Mt. Baker", "Glacier Peak", "Mt. St. Helens", "Mt. Olympus"), + lat = c(46.8523, 46.2024, 48.7767, 48.1125, 46.1914, 47.8013), + lon = c(-121.7603, -121.4909, -121.8132, -121.1139, -122.1956, -123.7111) + ) %>% sf::st_as_sf(coords = c("lon", "lat"), crs = 4326) + } else if (state_name == "Georgia") { + tibble::tibble( + peak = c("Brasstown Bald", "Rabun Bald", "Blood Mtn"), + lat = c(34.8743, 34.9660, 34.7398), + lon = c(-83.8111, -83.2996, -83.9367) + ) %>% sf::st_as_sf(coords = c("lon", "lat"), crs = 4326) + } else { NULL } +} + +#' Plot Spatial Autocorrelation Exploration +#' +#' @description Generates a Moran Scatterplot to visualize spatial +#' autocorrelation in elevation data using a 5km neighborhood. +#' +#' @param wa_data A dataframe or tibble containing elevation, lat, and lon columns. +#' +#' @return A ggplot object showing standardized elevation vs. spatially lagged elevation. +#' +#' @importFrom sf st_as_sf st_transform st_coordinates st_drop_geometry +#' @importFrom spdep dnearneigh nb2listw lag.listw card +#' @importFrom ggplot2 ggplot aes geom_point geom_smooth geom_hline geom_vline labs theme_minimal +#' @importFrom dplyr mutate +#' +#' @export +plot_spatial_exploration <- function(wa_data) { + + # 1. Convert to sf and project to meters (Washington State Plane North) + # This ensures the 5000 distance in dnearneigh is 5,000 meters. + wa_sf <- wa_data |> + sf::st_as_sf(coords = c("lon", "lat"), crs = 4326) |> + sf::st_transform(2285) + + # 2. Extract coordinates and build weights (5km radius) + coords <- sf::st_coordinates(wa_sf) + nb <- spdep::dnearneigh(coords, 0, 5000) + + # Remove points with zero neighbors to prevent divide-by-zero errors + ids_with_nb <- which(spdep::card(nb) > 0) + nb <- subset(nb, spdep::card(nb) > 0) + wa_sf <- wa_sf[ids_with_nb, ] + + # Row-standardized weights matrix + lw <- spdep::nb2listw(nb, style = "W", zero.policy = TRUE) + + # 3. Prep data for plotting + plot_df <- wa_sf |> + sf::st_drop_geometry() |> + dplyr::mutate( + # Scale elevation to get z-scores + elev_scaled = as.vector(scale(elevation)), + # Calculate the spatial lag (average elevation of neighbors) + elev_lag = spdep::lag.listw(lw, elev_scaled, zero.policy = TRUE) + ) + + # 4. Build Plot Object + p <- ggplot2::ggplot(plot_df, ggplot2::aes(x = elev_scaled, y = elev_lag)) + + ggplot2::geom_point(alpha = 0.2, color = "#2c3e50") + + ggplot2::geom_smooth( + method = "lm", + color = "#e74c3c", + linetype = "dashed", + formula = y ~ x + ) + + ggplot2::geom_hline(yintercept = 0, alpha = 0.3) + + ggplot2::geom_vline(xintercept = 0, alpha = 0.3) + + ggplot2::labs( + title = "Spatial Autocorrelation: Moran Scatterplot", + subtitle = "Washington Elevation (5km neighborhood)", + x = "Standardized Elevation (Z-score)", + y = "Spatially Lagged Elevation (Neighbors)" + ) + + ggplot2::theme_minimal() + + return(p) +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..3a9aa89 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Optimism Bias in Ecological Modeling + +## Project Overview + +This project explores the hazards of ignoring **spatial autocorrelation** in ecological modeling. Using the `forested` package and forest structure data from Washington State, this Quarto presentation demonstrates how standard random cross-validation yields overly optimistic performance estimates by allowing models to "cheat" via nearby neighbors. The analysis utilizes the `spatialsample` package to visualize and compare three distinct validation strategies—**Random** (the baseline), **Spatial Blocking** (geographic separation), and **Environmental Clustering** (ecological separation)—to establish robust, geographically transferable model performance metrics. \ No newline at end of file diff --git a/_targets.R b/_targets.R new file mode 100644 index 0000000..414d2d9 --- /dev/null +++ b/_targets.R @@ -0,0 +1,481 @@ +library(targets) +library(tarchetypes) + +# 1. Options ---- +tar_option_set( + packages = c( + "colorspace", + "elevatr", + "forested", + "ggcorrplot", + "ggrepel", + "ggspatial", + "gt", + "magrittr", + "patchwork", + "processx", + "psych", + "quarto", + "ranger", + "rmapshaper", + "sf", + "showtext", + "spatialsample", + "stringr", + "terra", + "tidyterra", + "tidymodels", + "tidyverse", + "tigris", + "xgboost", # For XGBoost + "earth", + "withr" + ), + format = "rds" +) + +tar_source("R/functions.R") + +# 3. The Pipeline ---- +list( + # constants + tar_target(n_folds, 10), + # Data Ingestion + tar_target(forested_wa, forested::forested_wa), + tar_target(forested_ga, forested::forested_ga), + tar_target( + wa_sf, + forested_wa %>% + sf::st_as_sf(coords = c("lon", "lat"), crs = 4326, remove = FALSE) + ), + tar_target( + name = eco_url, + command = "https://dmap-prod-oms-edc.s3.us-east-1.amazonaws.com/ORD/Ecoregions/us/us_eco_l3.zip", + format = "url" + ), + tar_target( + name = data_dir, + command = "data/epa", + format = "file" # Tracks the directory + ), + # Download data + tar_target( + name = eco_zip_file, + command = get_epa_ecoregions(url = eco_url, dest_dir = data_dir), + format = "file" + ), + # Data Processing + tar_target(forested_us, combine_forest(wa_data = forested_wa, ga_data = forested_ga)), + tar_target(boundary_wa_sf, fetch_state_boundary(state = "Washington")), + tar_target(boundary_ga_sf, fetch_state_boundary(state = "Georgia")), + tar_target( + name = eco_data, + command = process_ecoregions( + zip_path = eco_zip_file, + target_states = c("Washington", "Georgia"), + simplify_tol = 0.05 + ) + ), + # Raster File Target + tar_target(wa_elev_file, + create_elevation_raster(boundary_wa_sf, "data/wa_elevation.tif"), + format = "file"), + tar_target(ga_elev_file, + create_elevation_raster(boundary_ga_sf, "data/ga_elevation.tif"), + format = "file"), + + # Maps + tar_target(fig_us_map, plot_us_map()), + tar_target( + name = fig_us_map_file, + command = helper_save_fig( + plot_obj = fig_us_map, + name = "us_forests", + width = 10, + height = 5.25, + type = "map" + ), + format = "file" + ), + tar_target(wa_ga_map, fetch_study_area(c("Washington", "Georgia"))), + tar_target(map_wa_ga_regional, plot_regional_comparison(forested_us, wa_ga_map)), + tar_target( + name = fig_wa_ga_regional_file, + command = helper_save_fig( + plot_obj = map_wa_ga_regional, + name = "wa_ga_forests", + width = 9.2, + height = 4.25, + type = "map" + ), + format = "file" + ), + tar_target( + name = ecoregion_plot, + command = plot_ecoregion_comparison(eco_data) + ), + tar_target( + name = ecoregion_plot_file, + command = helper_save_fig( + plot_obj = ecoregion_plot, + name = "wa_ga_ecoregions", + width = 10, + height = 4.25, + type = "map" + ), + format = "file" # Tells targets to watch the actual .png file + ), + tar_target( + name = combined_topo_map, + command = save_combined_topo( + wa_data = forested_wa, + ga_data = forested_ga, + wa_boundary = boundary_wa_sf, + ga_boundary = boundary_ga_sf, + wa_raster_path = wa_elev_file, + ga_raster_path = ga_elev_file, + output_path = "figs/combined_topo.png" + ), + format = "file" + ), + tar_target( + map_precip_hex, + plot_precip_hex_comparison( + wa_data = forested_wa, + ga_data = forested_ga, + boundaries = wa_ga_map, + bins = 50 + ) + ), + tar_target(plot_cv_comparison, plot_cv_strategies(forested_wa)), + # fold mechanics + tar_target( + fig_fold_mechanics, + plot_fold_mechanics(wa_sf, boundary_wa_sf) + ), + # fold diagram + tar_target(fig_classic_cv, plot_classic_kfold_diagram()), + # Analysis + tar_target(tbl_forest_wa, format_summary_table(forested_wa)), + + tar_target(plot_distrib_wa, plot_forest_distributions(forested_wa)), + tar_target(plt_outliers, identify_outliers(forested_wa)), + + tar_target(map_wa_outliers, + save_outlier_map_png(forested_wa, boundary_wa_sf, wa_elev_file, "figs/wa_outliers.png"), + format = "file"), + tar_target(plt_wa_pca, plot_wa_pca(forested_wa)), + tar_target( + name = p_moran_exploration, + command = plot_spatial_exploration(forested_wa) + ), + # correlogram + tar_target(plt_correlogram, plot_correlations(forested_wa)), + + # vip plot + tar_target(plt_vip, plot_rf_importance(forested_wa)), + # umap plot + tar_target(umap_plot, plot_umap_forested(forested_wa)), + + # 1. Data Splitting ------------------------------------------------- + + # Define the split (80% Train, 20% Test) + tar_target(splits, initial_split(wa_sf, prop = 0.80, strata = forested)), + + # Extract the Training Set (Used for Resampling/Modeling) + tar_target(train_data, training(splits)), + + # Extract the Test Set (Locked away until the very end) + tar_target(test_data, testing(splits)), + # 2. Recipes ---- + ## A: Base (Includes Lat/Lon) ---- + tar_target( + recipe_base, + recipe(forested ~ ., data = train_data) %>% + update_role(geometry, new_role = "id") %>% + step_novel(all_nominal_predictors()) %>% + step_dummy(all_nominal_predictors()) %>% + step_zv(all_predictors()) %>% + step_normalize(all_numeric_predictors()) + ), + + ## B: Non-Spatial (Bio Only) ---- + tar_target( + recipe_non_spatial, + recipe(forested ~ ., data = train_data) %>% + update_role(geometry, lat, lon, new_role = "id") %>% + step_novel(all_nominal_predictors()) %>% + step_dummy(all_nominal_predictors()) %>% + step_zv(all_predictors()) %>% + step_normalize(all_numeric_predictors()) + ), + + ## C: Extensible (Feature Engineered) ---- + tar_target( + recipe_extensible, + recipe(forested ~ ., data = train_data) %>% + update_role(geometry, lat, lon, new_role = "id") %>% + step_rm(northness, county, year) %>% + step_ratio(precip_annual, denom = denom_vars(temp_annual_max)) %>% + step_mutate( + temp_range = temp_annual_max - temp_annual_min, + vpd_range = vapor_max - vapor_min + ) %>% + step_YeoJohnson(elevation) %>% + step_novel(all_nominal_predictors()) %>% + step_dummy(all_nominal_predictors()) %>% + step_zv(all_predictors()) %>% + step_normalize(all_numeric_predictors()) + ), + tar_target( + plot_yeo, + plot_yeo_johnson(forested_wa) + ), + # 3. Engines ---- + ## Logistic Regression ---- + tar_target( + spec_logistic, + logistic_reg() %>% + set_engine("glm") %>% + set_mode("classification") + ), + + ## MARS ---- + tar_target( + spec_mars, + mars(num_terms = 10, prod_degree = 2) %>% + set_engine("earth", nfold = 1) %>% # nfold=1 prevents internal CV (speed) + set_mode("classification") + ), + + ## Random Forest ---- + tar_target( + spec_rf, + rand_forest(trees = 1000, min_n = 10) %>% + set_engine("ranger", + importance = "impurity", # Calculate variable importance + num.threads = 1) %>% # <--- Server Safety Lock + set_mode("classification") + ), + + ## XGBoost ---- + tar_target( + spec_xgb, + boost_tree(trees = 1000, tree_depth = 6, learn_rate = 0.01) %>% + set_engine("xgboost", + nthread = 1) %>% # <--- Server Safety Lock + set_mode("classification") + ), + # 4. The Workflow Set ---- + # Crosses every recipe with every model (2 x 4 = 8 workflows) + tar_target( + model_set, + workflow_set( + preproc = list(base = recipe_base, + non_spatial = recipe_non_spatial, + extensible = recipe_extensible), + models = list( + log = spec_logistic, + rf = spec_rf, + xgb = spec_xgb, + mars = spec_mars + ), + cross = TRUE + ) + ), + # 5. Resampling Strategies ----- + + ## A. Random Folds ---- + tar_target( + folds_random, + vfold_cv(train_data, v = n_folds, strata = forested) + ), + + ## B. Spatial Blocks ---- + tar_target( + folds_block, + spatial_block_cv(train_data, v = n_folds) + ), + + ## C. Spatial Clustering ---- + tar_target( + folds_cluster, + spatial_clustering_cv(train_data, v = n_folds) + ), + # 6. Fit Models ----- + + ## Branch 1: Random CV ---- + tar_target( + results_random, + workflow_map( + model_set, + "fit_resamples", + resamples = folds_random, + metrics = metric_set(roc_auc, accuracy, pr_auc), + verbose = TRUE + ) + ), + + ## Branch 2: Block CV ---- + tar_target( + results_block, + workflow_map( + model_set, + "fit_resamples", + resamples = folds_block, + metrics = metric_set(roc_auc, accuracy, pr_auc), + verbose = TRUE + ) + ), + + ## Branch 3: Cluster CV ---- + tar_target( + results_cluster, + workflow_map( + model_set, + "fit_resamples", + resamples = folds_cluster, + metrics = metric_set(roc_auc, accuracy, pr_auc), + verbose = TRUE + ) + ), + # 7. Results ---- + tar_target( + fig_cv_comparison, + plot_spatial_cv_comparison(results_random, results_block, results_cluster) + ), + tar_target( + fig_model_stability, + plot_model_stability(results_random, results_block, results_cluster, best_model_id) + ), + # 8. Select and Tune the Best Model ---- + tar_target( + best_model_id, + results_cluster %>% + rank_results(rank_metric = "roc_auc", select_best = TRUE) %>% + slice(1) %>% + pull(wflow_id) + ), + tar_target( + tbl_model_performance, + results_cluster %>% + rank_results(rank_metric = "roc_auc", select_best = TRUE) %>% + filter(.metric == "roc_auc") + ), + + # 9. Final Fit ---- + tar_target( + final_fit_results, + last_fit( + extract_workflow(model_set, best_model_id), + split = splits, # Your original 80/20 split + metrics = metric_set(roc_auc, accuracy) + ) + ), + + # 10. Test Set Performance Plot ---- + tar_target( + fig_final_performance, + plot_final_test_results(final_fit_results) # Use the specific plotting function + ), + tar_target( + tbl_performance, + create_performance_table(results_cluster, final_fit_results) + ), + # 11. Confusion Matrix ---- + tar_target( + fig_confusion_matrix, + plot_final_confusion_matrix(final_fit_results) + ), + tar_target( + test_predictions, + collect_predictions(final_fit_results) %>% + dplyr::bind_cols( + rsample::testing(splits) %>% + dplyr::select(lat, lon) + ) + ), + tar_target( + map_wa_errors, + save_error_map_png( + data = test_predictions, # <--- Use the extracted data here + boundary_sf = boundary_wa_sf, + raster_path = wa_elev_file, + output_path = "figs/wa_errors.png" + ), + format = "file" + ), + # Georgia ---- + tar_target( + model_predictors, + c("elevation", "precip_annual", "temp_annual_mean", "roughness") + ), + tar_target( + ga_aoa_data, + calculate_ga_aoa( + train_data = forested_wa, + test_data = forested_ga, + predictors = model_predictors + ) + ), + tar_target( + plot_aoa_ga, + plot_georgia_aoa( + aoa_sf = ga_aoa_data + ) + ), + + # 3. Predict on Georgia using the Washington Model + tar_target( + ga_predictions, + predict_external_region( + final_fit = final_fit_results, + new_data = forested_ga + ) + ), + + # 4. Map the Predictions + tar_target( + map_ga_probs, + plot_ga_comparison_map( + pred_data = ga_predictions, + boundaries = boundary_ga_sf # <--- CHECK THIS NAME + ) + ), + # 5. Confusion Matrix for Georgia + tar_target( + ga_conf_mat, + plot_ga_confusion_matrix(ga_predictions) + ), + # 6. Map of Errors (False Positives + False Negatives) + tar_target( + map_failure_mechanism, + plot_failure_mechanism( + aoa_data = ga_aoa_data, # <--- Reads the SAME data target + pred_data = ga_predictions, + boundaries = boundary_ga_sf + ) + ), + # Report ---- + tar_target( + name = report, + command = { + # 1. Temporarily disable renv auto-loader so Quarto uses system libs + if (file.exists(".Rprofile")) file.rename(".Rprofile", "hold_Rprofile") + + # 2. Use a 'tryCatch' to ensure the .Rprofile is restored even if render fails + res <- tryCatch({ + quarto::quarto_render("index.qmd", quiet = FALSE) + }, error = function(e) { + if (file.exists("hold_Rprofile")) file.rename("hold_Rprofile", ".Rprofile") + stop(e) + }) + + # 3. Restore the .Rprofile + if (file.exists("hold_Rprofile")) file.rename("hold_Rprofile", ".Rprofile") + + "index.html" + }, + format = "file" + ) +) diff --git a/assets/ecoregions_map.png b/assets/ecoregions_map.png new file mode 100644 index 0000000..5e42d9b Binary files /dev/null and b/assets/ecoregions_map.png differ diff --git a/assets/fonts.css b/assets/fonts.css new file mode 100644 index 0000000..4c24ae6 --- /dev/null +++ b/assets/fonts.css @@ -0,0 +1,43 @@ +/* assets/fonts.css */ + +@font-face { + font-family: 'Atkinson Hyperlegible Next'; + src: url('fonts/AtkinsonHyperlegibleNext-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Atkinson Hyperlegible Next'; + src: url('fonts/AtkinsonHyperlegibleNext-Bold.ttf') format('truetype'); + font-weight: bold; + font-style: normal; +} + +@font-face { + font-family: 'Atkinson Hyperlegible Next'; + src: url('fonts/AtkinsonHyperlegibleNext-Italic.ttf') format('truetype'); + font-weight: normal; + font-style: italic; +} + +@font-face { + font-family: 'Atkinson Hyperlegible Next'; + src: url('fonts/AtkinsonHyperlegibleNext-BoldItalic.ttf') format('truetype'); + font-weight: bold; + font-style: italic; +} + +@font-face { + font-family: 'Atkinson Hyperlegible Mono'; + src: url('fonts/AtkinsonHyperlegibleMono-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Atkinson Hyperlegible Mono'; + src: url('fonts/AtkinsonHyperlegibleMono-Bold.ttf') format('truetype'); + font-weight: bold; + font-style: normal; +} \ No newline at end of file diff --git a/assets/fonts/AtkinsonHyperlegibleMono-Bold.ttf b/assets/fonts/AtkinsonHyperlegibleMono-Bold.ttf new file mode 100644 index 0000000..0cd144b Binary files /dev/null and b/assets/fonts/AtkinsonHyperlegibleMono-Bold.ttf differ diff --git a/assets/fonts/AtkinsonHyperlegibleMono-Regular.ttf b/assets/fonts/AtkinsonHyperlegibleMono-Regular.ttf new file mode 100644 index 0000000..a55ce8b Binary files /dev/null and b/assets/fonts/AtkinsonHyperlegibleMono-Regular.ttf differ diff --git a/assets/fonts/AtkinsonHyperlegibleNext-Bold.ttf b/assets/fonts/AtkinsonHyperlegibleNext-Bold.ttf new file mode 100755 index 0000000..668a2d1 Binary files /dev/null and b/assets/fonts/AtkinsonHyperlegibleNext-Bold.ttf differ diff --git a/assets/fonts/AtkinsonHyperlegibleNext-BoldItalic.ttf b/assets/fonts/AtkinsonHyperlegibleNext-BoldItalic.ttf new file mode 100755 index 0000000..f5863f9 Binary files /dev/null and b/assets/fonts/AtkinsonHyperlegibleNext-BoldItalic.ttf differ diff --git a/assets/fonts/AtkinsonHyperlegibleNext-Italic.ttf b/assets/fonts/AtkinsonHyperlegibleNext-Italic.ttf new file mode 100755 index 0000000..6d09ee0 Binary files /dev/null and b/assets/fonts/AtkinsonHyperlegibleNext-Italic.ttf differ diff --git a/assets/fonts/AtkinsonHyperlegibleNext-Regular.ttf b/assets/fonts/AtkinsonHyperlegibleNext-Regular.ttf new file mode 100755 index 0000000..d0982cd Binary files /dev/null and b/assets/fonts/AtkinsonHyperlegibleNext-Regular.ttf differ diff --git a/assets/study_sites_globe.png b/assets/study_sites_globe.png new file mode 100644 index 0000000..5467538 Binary files /dev/null and b/assets/study_sites_globe.png differ diff --git a/custom.scss b/custom.scss new file mode 100644 index 0000000..1bfcf12 --- /dev/null +++ b/custom.scss @@ -0,0 +1,31 @@ +/* custom.scss */ +#title-slide h1 { + font-size: 1.4em !important; + line-height: 1.2 !important; +} + +/* Fallback: Make it "nuclear" if the above fails */ +.reveal .slides section#title-slide h1 { + font-size: 1.2em !important; +} + +.reveal .slides section.title-slide { + background-color: #ffffff !important; /* Force white background */ +} +.reveal .slides section.title-slide h1 { + color: #000000 !important; +} +.reveal .slides section.title-slide p, +.reveal .slides section.title-slide .quarto-title-author-name { + color: #333333 !important; +} +$font-family-monospace: "Atkinson Hyperlegible Mono", monospace !default; + +/*-- scss:defaults --*/ + +/* Use the name exactly as defined in fonts.css */ +$font-family-sans-serif: "Atkinson Hyperlegible Next", sans-serif !default; +$presentation-heading-font: "Atkinson Hyperlegible Next", sans-serif !default; + +/* Other tweaks */ +$presentation-font-size-root: 40px; \ No newline at end of file diff --git a/figs/combined_topo.png b/figs/combined_topo.png new file mode 100644 index 0000000..34eba7e Binary files /dev/null and b/figs/combined_topo.png differ diff --git a/figs/map_us_forests.png b/figs/map_us_forests.png new file mode 100644 index 0000000..a8e8aff Binary files /dev/null and b/figs/map_us_forests.png differ diff --git a/figs/map_wa_ga_ecoregions.png b/figs/map_wa_ga_ecoregions.png new file mode 100644 index 0000000..8b9e136 Binary files /dev/null and b/figs/map_wa_ga_ecoregions.png differ diff --git a/figs/map_wa_ga_forests.png b/figs/map_wa_ga_forests.png new file mode 100644 index 0000000..2ff0371 Binary files /dev/null and b/figs/map_wa_ga_forests.png differ diff --git a/figs/wa_errors.png b/figs/wa_errors.png new file mode 100644 index 0000000..fe95196 Binary files /dev/null and b/figs/wa_errors.png differ diff --git a/figs/wa_outliers.png b/figs/wa_outliers.png new file mode 100644 index 0000000..c261e77 Binary files /dev/null and b/figs/wa_outliers.png differ diff --git a/forested.Rproj b/forested.Rproj new file mode 100644 index 0000000..eaa6b81 --- /dev/null +++ b/forested.Rproj @@ -0,0 +1,18 @@ +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX + +BuildType: Package +PackageUseDevtools: Yes +PackageInstallArgs: --no-multiarch --with-keep.source +PackageRoxygenize: rd,collate,namespace diff --git a/ieee-access.csl b/ieee-access.csl new file mode 100644 index 0000000..d919806 --- /dev/null +++ b/ieee-access.csl @@ -0,0 +1,17 @@ + + diff --git a/images/resampling.svg b/images/resampling.svg new file mode 100644 index 0000000..33dc40f --- /dev/null +++ b/images/resampling.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Produced by OmniGraffle 7.13.1 + 2020-03-15 00:14:09 +0000 + + + Canvas 1 + + Layer 1 + + + + + All Data + + + + + + + Training + + + + + + + Testing + + + + + + + + + + + + + Assessment + + + + + + + Analysis + + + + + + + Resample 1 + + + + + + + + + + + + + + + + Assessment + + + + + + + Analysis + + + + + + + Resample 2 + + + + + + + + + + + + + + + + Assessment + + + + + + + Analysis + + + + + + + Resample + B + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/index.qmd b/index.qmd new file mode 100644 index 0000000..7662313 --- /dev/null +++ b/index.qmd @@ -0,0 +1,919 @@ +--- +title: "From Mt. Olympus to the Okefenokee" +subtitle: "A Case Study in Spatial Modeling" +author: "Rob Wiederstein" +lang: en-US +smart: false +format: + revealjs: + from: markdown-smart + theme: [default, custom.scss] + css: assets/fonts.css + embed-resources: true + title-slide-attributes: + data-background-image: assets/study_sites_globe.png + data-background-size: 150% + data-background-position: center + style: "color: #222222;" + transition: fade + slide-number: true + scrollable: true + chalkboard: false + tbl-cap-location: bottom + toc: true + toc-depth: 1 + toc-title: "Order" + fig-dpi: 300 + fig-width: 10 + fig-asp: 0.5 + fig-align: center + resources: + - assets/fonts +execute: + echo: false + cache: false +bibliography: references.bib +csl: ieee-access.csl +nocite: | + @* +--- + + +```{r} +#| label: setup +#| include: false +library(here) +library(targets) +library(gt) +library(ggplot2) +library(showtext) +source("R/functions.R") +setup_forestry_fonts() +``` + +# Introduction + +## The Core Problem + +::: {.incremental} +1. **Stationarity:** Do rules hold constant across different places? + + +2. **Spatial Leakage:** When location is added to a model, does it make it more accurate? + +3. **Extrapolation:** How does a model perform when trained with location data and applied in a new location? +::: + +::: {.notes} +* **Goal:** Test if "location" features trick the model into high accuracy that fails elsewhere. +::: + +## The `forested` Package + +:::: {.columns} + +::: {.column width="25%"} +![](https://github.com/simonpcouch/forested/blob/main/inst/logo.png?raw=true){fig-align="center" width="80%"} +::: + +::: {.column width="75%"} +- The `forested` data are from people who looked at a place to see if it was a forest. + +- They work for the Forest Inventory and Analysis (FIA) program, part of the USDA. + +- It would be cheaper if a forest could be predicted from weather data and land charateristics. + +- Forests are in GA and WA. +::: + +:::: + +::: {.notes} +**Speaker Notes:** +- The `forested` package is our primary data source, containing the raw measurements for both the Washington and Georgia "islands". + +- We are auditing this package's features to see how well they predict the 'forested' outcome in two geographically distant locations. + +::: + +## The First Law of Geography + +
+
+ +>"Everything is related to everything else, but near things are more related than distant things."[@tobler_computer_1970] + + +::: {.notes} + +- This is the "First Law of Geography" and explains why our Random Forest "cheats" using Lat/Lon. + +- Proximity Bias (Spatial Autocorrelation) creates high local accuracy but zero portability. + +- We are testing for **Stationarity**: Do the biophysical rules of Washington still work in Georgia? + +::: + +## Caveat + +
+
+ +>"It is not and has never been the case that Tobler’s first law of geography . . . always holds absolutely. This is and has always been an oversimplification, disguising possible underlying entitation, support, and other misspecification problems."[@pebesma_spatial_2025] + +::: {.notes} + +::: + + +## Forest Locations + +```{r} +#| label: fig-us-map-forest-locations +#| fig-cap: "Map shows the geographic distance separating Washington and Georgia." +knitr::include_graphics(here::here("figs", "map_us_forests.png")) +``` + + +:::{.notes} +- Washington is approximately 15 degrees north of Georgia and 30 degrees west. +- the sheer distance suggests that the respective forests are different. +::: + +## Regional Forestation + +```{r} +#| label: fig-map-wa-ga +#| fig-cap: "Washington (a) and Georgia (b) showing forested areas. Note that the states are rescaled independently to maximize clarity." +#tar_read(map_wa_ga) +knitr::include_graphics(here::here("figs", "map_wa_ga_forests.png")) +``` + +## Regional Topography + +```{r} +#| label: fig-topo-compare +#| echo: false +#| fig-align: "center" +#| out-width: "100%" +#| fig-cap: "Topographic relief map of Washington (a) and Georgia (b). Note: Regions are not to scale and elevation ramps are independent (WA range is ~3x GA)." +knitr::include_graphics( + here::here("figs", "combined_topo.png") +) +``` + +:::{.notes} +- **Scale Disparity:** Remind the audience that WA peaks reach ~4,400m + while GA peaks reach ~1,450m. The color ramps are local. + +- **Rain Shadow:** Point out the Cascade barrier in WA; this is the + primary driver for the precipitation variance in the model. + +- **Modeling Link:** This extreme relief is why we use a Yeo-Johnson + transformation on elevation in our tidymodels recipe—a linear + scale would over-emphasize alpine peaks while flattening + the Georgia Piedmont. +::: + +## Regional Rainfall + +```{r} +#| label: fig-precip-hex +#| fig-cap: "Mean annual precipitation (mm). Note the extreme gradient in WA (training) vs. the relative uniformity of GA (target)." + +targets::tar_read(map_precip_hex) +``` + +## Level III Ecoregions + +```{r} +#| label: fig-ecoregion-comparison +#| fig-cap: "Washington (a) has nine distinct regions while Georgia (b) has seven. Data sourced from U.S. EPA Level III Ecoregions [@epa_ecoregions_2013; @omernik_ecoregions_1987]." + +knitr::include_graphics(here::here("figs", "map_wa_ga_ecoregions.png")) + +``` + +:::{.notes} +- Ecoregions denote areas with similar ecosystems and resources. +- The EPA defines 105 Level III regions for management. +- James Omernik drew these lines using holistic expert synthesis. +- Washington and Georgia share zero common ecoregions. +- Washington transitions rapidly from rainforests to arid deserts. +- This extreme heterogeneity makes random spatial modeling difficult. +::: + +# Explore + +## Descriptive Summary + + +```{r} +#| label: display-summary +#| echo: false +tar_read(tbl_forest_wa) +``` + + +## Distributions + +```{r} +#| label: fig-distributions +#| fig-cap: "Comparison of environmental variable distributions for forested vs. non-forested areas." +targets::tar_read(plot_distrib_wa) +``` + +::: {.notes} +**1. Topic Introduction** + +- This slide presents a univariate audit of our numeric predictors to identify which biophysical features provide the strongest signal for forestation. + +- By comparing the "fingerprints" of forested (green) and non-forested (brown) plots, we can visually assess the potential for classification before we begin training models on our EPYC VM. + +**2. Axis Definitions** +- **The X-Axis (Value)**: Represents the measurement for each specific biophysical variable, such as millimeters of rain or degrees Celsius. +- **The Y-Axis (Density)**: Represents the probability density for a given value; higher peaks indicate a higher frequency of observations at that specific value within the dataset. + +**3. Significant Variables (High Contrast)** +- **Precipitation (`precip_annual`)**: This is a primary driver; forested plots are heavily concentrated in higher rainfall zones, while non-forested plots dominate the dry end of the spectrum. +- **Elevation**: There is a distinct "Forestation Window"; plots between 1,000 and 2,000 meters show a significant green peak, whereas non-forested plots cluster at lower elevations. +- **Temperature (`temp_annual_max` & `mean`)**: Forested plots consistently peak at lower maximum and mean temperatures compared to non-forested areas, suggesting a thermal threshold for forest growth. +- **Vapor Pressure (`vapor_max` & `min`)**: We see a strong bimodal separation; forested areas occupy a specific atmospheric moisture niche distinctly different from non-forested regions. + +**4. Non-Significant Variables (High Overlap)** +- **Orientation (`eastness` & `northness`)**: These distributions are nearly identical for both classes, suggesting that cardinal direction alone is a weak predictor in this regional regime. +- **Roughness**: While there is a slight lean toward forested plots being in rougher terrain, the massive overlap indicates surface texture is not a primary discriminator. +::: + + +## Outliers + +```{r} +#| label: outliers +tar_read(plt_outliers) +``` + + + +## Map Outliers + +```{r} +#| label: fig-wa-outliers +#| fig-cap: "Map of observations with a value greater than three standard deviations from mean." +#| out-width: "100%" + +knitr::include_graphics("figs/wa_outliers.png") +``` + +::: {.notes} +**1. Topic Introduction** +* This map visualizes our "3-Sigma" outliers, which are heavily concentrated along the mountainous west side of the state. + +**2. The Orographic Factor** +* The concentration on the west is driven by the Cascades and Olympics. These regions host our most extreme biophysical values for precipitation and elevation. + +**3. Intermixed Extremes** +* Note the intermixing of green and brown points. In these high-volatility alpine zones, a forest and a barren ridge often share the same coordinates. +* This proves that local "nearness" is not enough to predict forestation here; the model must rely on the specific biophysical drivers we identified in our density distributions. + +**4. The Audit Link** +* These outliers represent the "edge cases" of our Washington model. Their intermixed nature makes them the hardest points to classify, serving as a preview for our Georgia transfer test. +::: + + +## Principal Component Analysis + +```{r} +#| label: pca +tar_read(plt_wa_pca) +``` + +::: {.notes} +**1. What is PCA?** + +PCA (Principal Component Analysis) is a dimensionality reduction tool that takes our 16 variables—including latitude, longitude, and climate data—and compresses them into two primary axes called Principal Components. It allows us to view the 'shape' of the entire Washington dataset in a single 2D space. + +**2. Why use it here?** + +We use it to explore the structural integrity of our data. Before building a model, we need to know if the environment of 'Forested' plots is actually mathematically different from 'Non-Forested' plots. By including lat and lon, we are seeing the combined power of geography and biophysics. + +**3. Does it show anything?** + +It shows that the data is not a random cloud; it has a clear orientation. The spread along PC1 captures the primary environmental gradient of Washington—likely moving from the moist coast to the arid east. + +**4. Is there good separation on the outcome variable?** + +Yes, the separation is significant. We see a distinct 'No' (Non-Forested) cluster forming a tail on the right and a dense 'Yes' (Forested) cluster on the left. While there is 'Alpine Mixing' in the center where categories overlap, the two groups occupy mostly different regions of the feature space. + +**5. What does it foreshadow for modeling?** + +This separation foreshadows high accuracy for our local Washington model. Because the classes are so distinct in this space, a logistic regression should have no trouble drawing a boundary between them. However, the tight coupling of biophysics with coordinates (lat/lon) here warns us that the model might 'memorize' Washington's map, which will be the primary challenge when we attempt to transfer it to Georgia. +::: + +## Correlogram + +```{r} +#| label: correlogram +tar_read(plt_correlogram) +``` + +::: {.notes} +**1. Orientation** +- If you look at the very first column on the left, we can see exactly what drives our "Forested" classification. +- Blue means "More Forest," Orange means "Less Forest." + +**2. The Sanity Check** +- First, look at the bottom square: **Canopy Cover (0.75)**. +- This is our sanity check. Obviously, forests have high canopy cover. If this wasn't blue, our data would be broken. + +**3. The Biophysical Story: Water vs. Heat** +- The real story is the battle between water and heat. +- **Precipitation (0.52)** is a strong blue driver. In Washington, rain equals trees. +- **Vapor Pressure (-0.64)** is a deep orange driver. High vapor pressure—which correlates with hot, dry valleys—effectively kills the forest probability. + +**4. The Terrain Factor** +- Look at **Roughness (0.39)**. +- Rugged, difficult terrain is more likely to be forested. This is likely a mix of biophysics (mountains catch rain) and human history (flat land gets cleared for farming). + +**5. The Surprise** +- Finally, look at **Northness and Eastness**. They are near **zero**. +- This tells us that while the *direction* a slope faces might change *which* trees grow there, it doesn't determine *if* trees grow there. +::: + +## VIP + +```{r} +#| label: variable-importance-plt +tar_read(plt_vip) +``` + +::: {.notes} +**1. The Comparison** + +- "We just looked at Correlations (linear relationships). Now let's look at Variable Importance via Random Forest. This is what the model actually uses to make decisions." + +**2. The Consistency** + +- "The top three are the same: Canopy Cover, Rain, and Aridity (Vapor Pressure). This confirms our model is learning real biophysics." + +**3. Spatial Factors** + +- "But look at number 4: **Longitude**." + +- "In the correlation chart, Longitude was just a moderate factor. Here, it is massive." + +- "The model has learned that Washington is divided into two distinct climate zones—West and East." + +- "Instead of learning the physics of *why* trees grow there, it's partially just memorizing *where* they grow. This confirms our hypothesis: the model is using geography as a shortcut. And is worth remembering when we apply it to the Georgia data. + +::: + +## UMAP + +```{r} +#| label: umap-plot +tar_read(umap_plot) +``` + +## Spatial Dependency Analysis + +```{r} +#| label: fig-moran +#| echo: false +#| fig-align: "center" +#| fig-cap: "Moran Scatterplot. The strong positive slope confirms significant spatial autocorrelation ($I > 0.6$)." + +tar_read(p_moran_exploration) +``` + +:::{.notes} + +SPEAKER NOTES: +1. THE VISUAL EVIDENCE: Point out the steep, positive slope of the + red dashed line. This slope is a visual representation of the + Global Moran’s I. A positive slope confirms that high-elevation + plots are surrounded by other high-elevation plots (Top Right + Quadrant), while low-elevation areas are also clustered (Bottom Left). + +2. THE "CHEATING" PROBLEM: Explain that this clustering is why + standard Random Cross-Validation is insufficient. If a training + point and a testing point are only 5km apart, the model can + effectively "cheat" by using local similarities rather than + learning the broader ecological relationships. + +3. THE JUSTIFICATION: This plot is the primary justification for: + - Using Spatial Block Cross-Validation to force the model to + predict on entirely unseen regions. + - Removing "Northness" and "County" as predictors to prevent the + model from simply memorizing regional averages. + - Applying the Yeo-Johnson transformation to normalize the extreme + elevation variance seen in these clustered Cascade peaks. + +4. THE SCALE: Note that we used a 5km fixed-distance neighborhood + transformed into Washington State Plane North (meters) to ensure + the spatial relationships are geographically accurate. +::: + + + +# Resampling + +## Spatial Autocorrelation + +
+
+ +>"When data are not independent (e.g. due to spatial autocorrelation), random cross-validation yields optimistic estimates of predictive performance because training and test sets are not independent."[@roberts_crossvalidation_2017] + +:::{.notes} +**1. Translation of the Quote** + +This quote describes the "Golden Rule" of geography: "Everything is related to everything else, but near things are more related than distant things." + +**2. Definition: Spatial Autocorrelation** + +Spatial Autocorrelation just means that data points close to each other are practically clones. If it's raining at your house, it's probably raining at your neighbor's house. + +**3. forested dataset** + +Forests are "clumpy." If you stand next to a Douglas Fir in Washington and take one step to the left, you are almost certainly still in a forest. The elevation, soil, and rain are identical. + +**4. Why Random CV is "Optimistic" (The Cheating)** + +- When the standard **Random Cross-Validation** is used, the first tree is assigned to the "Study Group" and the second tree (one step away) to the "Test Group." + +- The model doesn't learn ecology. It just looks at the neighbor (lat and lon) and copies the answer. + +- This gives us an **"Optimistic Estimate"**—a fancy way of saying our high score was fake because the model was cheating off its neighbor. + +::: + +## The Mechanics of Resampling + +```{r} +#| label: fig-resampling +#| echo: false +#| fig-cap: "Visualizing the resampling process [@kuhn_tidy_2022]" +#| fig-align: "center" +#| out-width: "75%" +#| out-extra: 'style="width:75%;"' + +knitr::include_graphics(here::here("images", "resampling.svg")) +``` + +:::{.notes} +- **The Concept:** Resampling methods (like cross-validation and bootstrapping) are **empirical simulation systems**. They generate different versions of our training set to simulate how the model handles new data. + +- **The Golden Rule:** It is critical to remember: Resampling is *always* used with the **Training set**. The **Test set** is not involved. + +- **The Vocabulary:** To avoid confusion with our initial Train/Test split, we use specific language for these internal loops: + - **Analysis Set:** The subset used to **fit** the model. + - **Assessment Set:** The subset used to **evaluate** performance. + +- **The Mechanism:** In every iteration, these two sets are **mutually exclusive**. We fit on the Analysis set, and we measure performance on the Assessment set. + +- **The Why:** As we discussed, simply re-predicting the training set is problematic (it leads to optimism bias). Resampling allows us to get a realistic appraisal using the training set without ever touching the final test data. +::: + +## Random K-Fold Cross-Validation + +```{r} +#| label: fig-classic-cv +#| fig-cap: "Conceptual diagram showing the random assignment of observations to the analysis and assessment groups." +tar_read("fig_classic_cv") +``` + + +## Cross Validation Strategies + +```{r} +#| label: fig-cv-strategies +#| echo: false +#| fig-width: 14 +#| fig-height: 5 +#| out-width: "100%" +#| fig-cap: "Three validation strategies. **Left:** Random splitting mixes train/test points. **Middle:** Spatial blocking forces geographic separation. **Right:** Clustering blocks by environmental similarity. (Note the outline for the Columbia Plateau. See @fig-ecoregion-comparison.)" + +tar_read(plot_cv_comparison) +``` + +::: {.notes} +**1. Left Panel: Random CV (The Illusion of Accuracy)** +- This visualizes why Random CV yields **over-optimistic estimates**. +- Because the colors are mixed (Random), the model can accurately predict a "Red" point simply by memorizing the "Blue" point next to it. +- This isn't "true" predictive power; it is **autocorrelation leakage**. The model is interpolating neighbors rather than learning the underlying ecological rules. + +**2. Middle Panel: Spatial Blocking (Forcing Independence)** +- To get a **realistic assessment**, we must enforce spatial independence. +- The grid structure ensures that the test data (Red blocks) is geographically distinct from the training data. +- The performance score will likely drop compared to the first map, but that lower score is **more accurate**. It reflects how the model will actually perform on a new, unvisited site. + +**3. Right Panel: Environmental Clustering (Testing Generalization)** +- This strategy tests for **ecological generalization**. +- Notice the large red area in the southeast—the algorithm identified the **Columbia Plateau** as a distinct environment. +- By holding out entire environments (e.g., training on "Wet Coastal" to predict "Dry Plateau"), we test if the model captures the fundamental biological relationships (e.g., how temp/rain affect trees) rather than just memorizing geographic trends. +::: + +## Analysis vs. Assessment + +```{r} +#| label: fig-mechanics +#| fig-cap: "Visualization of Fold 1 across three cross-validation strategies. Magenta points represent the held-out assessment set." +tar_read(fig_fold_mechanics) +``` + +::: {.notes} +- **Visualizing the Split**: This slide illustrates Fold 1 of 5; gray points represent the "Analysis" set used for training, while magenta points represent the "Assessment" set the model must predict. +- **Confetti vs. Blocks**: The Random split (left) creates a "confetti" effect where every test point is surrounded by nearby training points, leading to the spatial autocorrelation and "optimism bias" we discussed earlier. +- **Geographic and Ecological Isolation**: The middle and right maps show how we force the model to predict across geographic and ecological gaps. +- **The Columbia Plateau Test**: Specifically in the Environmental Clustering map (right), the entire Columbia Plateau is isolated as a test set. +- **Validating Results**: Because the model had to "learn" forests in the mountains to predict the Plateau, we gained high confidence in its performance there, which was later confirmed by the near-zero error rate in that region. +- **Preparation for Georgia**: This level of isolation is a direct rehearsal for our next step, where we move from the Washington ecoregions to the completely unfamiliar landscapes of Georgia. +::: + +# Models + +## Engines + +::: {.incremental} +1. Logistic Regression +2. MARS +3. Random Forest +4. XGBoost +::: + +::: {.notes} +**Logistic Regression:** +Simple, interpretable baseline. Captures linear relationships efficiently. + +**MARS:** +Models non-linearities automatically. Good balance between linear and trees. + +**Random Forest:** +Robust ensemble method. Reduces overfitting through averaging. + +**XGBoost:** +High-performance gradient boosting. Often dominates on tabular data. +::: + + +## Recipe A: With Coords + +```{.r code-line-numbers="2|3"} +recipe(forested ~ ., data = train_data) %>% + # geometry is ID, but lat/lon remain as predictors + update_role(geometry, new_role = "id") %>% + step_novel(all_nominal_predictors()) %>% + step_dummy(all_nominal_predictors()) %>% + step_zv(all_predictors()) %>% + step_normalize(all_numeric_predictors()) +``` + +::: {.notes} +**Base Strategy:** Standard approach uses latitude and longitude as predictive features. Risk is the model memorizing locations instead of learning rules. +::: + +## Recipe B: No Coords + +```{.r code-line-numbers="2|3"} +recipe(forested ~ ., data = train_data) %>% + # Explicitly remove lat/lon from training + update_role(geometry, lat, lon, new_role = "id") %>% + step_novel(all_nominal_predictors()) %>% + step_dummy(all_nominal_predictors()) %>% + step_zv(all_predictors()) %>% + step_normalize(all_numeric_predictors()) +``` + +::: {.notes} + +**Non-Spatial:** Removes explicit coordinates to prevent spatial overfitting. Forces the model to rely solely on biological environmental signals. + +::: + +## Recipe C: Extensible + +```{.r code-line-numbers="4-10|12"} +recipe(forested ~ ., data = train_data) %>% + update_role(geometry, lat, lon, new_role = "id") %>% + # 1. Remove political/time markers + step_rm(northness, county, year) %>% + # 2. Add Physics (Aridity & Temp Range) + step_ratio(precip_annual, denom = denom_vars(temp_annual_max)) %>% + step_mutate( + temp_range = temp_annual_max - temp_annual_min, + vpd_range = vapor_max - vapor_min + ) %>% + # 3. Fix Skew (Critical for Logistic Regression) + step_YeoJohnson(elevation) %>% + step_dummy(all_nominal_predictors()) %>% + step_normalize(all_numeric_predictors()) +``` + +::: {.notes} +**Extensible:** Engineers physics-based features like aridity and temperature range. Transforms skewed variables to help linear models extrapolate to new regions. +::: + +## YeoJohnson Transformation + +```{r} +#| echo: false +#| fig-align: center +#| fig-width: 10 +#| fig-height: 5 +#| fig-cap: "Normalizing Elevation via Yeo-Johnson Transformation. The raw elevation data (left) exhibits strong right-skewness, which can degrade linear model performance. Applying a Yeo-Johnson transformation with λ=0.49 (right) successfully normalizes the distribution, satisfying the linearity assumptions required for the Extensible Logistic Regression model." +tar_read(plot_yeo) +``` + +:::{.notes} +Why this matters: + +- **The Problem (Left):** Raw elevation data is highly skewed. Linear models (like Logistic Regression) struggle with this because they assume a consistent relationship across the range. + +- **The Solution (Right):** The Yeo-Johnson transformation normalizes the distribution (bell curve). + +- **The Result:** This allows the model to "see" the signal clearly, improving stability when moving to new regions like Georgia. +::: + +## Resampling Strategies + +```{.r code-line-numbers="2|5|8"} +# A. Random Folds (Standard) +vfold_cv(train_data, v = 10, strata = forested) + +# B. Spatial Blocks (Grid-based) +spatial_block_cv(train_data, v = 10) + +# C. Spatial Clustering (Region-based) +spatial_clustering_cv(train_data, v = 10) +``` + +::: {.notes} + +- **Random Folds:** Standard approach. Randomly shuffles data. Dangerous here because it allows "cheating" via nearby pixels. + +- **Spatial Blocks:** Divides the map into a checkerboard. Forces the model to predict on a blind grid square. + +- **Spatial Clustering:** Uses K-means to create distinct ecological zones. The hardest test—simulates moving to a totally new region. +::: + + +# Results + +## Spatial Validation Analysis + + +```{r} +#| label: fig-spatial-results +#| fig-cap: "Comparison of Model Performance (ROC AUC) across three spatial validation strategies. Benchmark (0.96 ROC AUC) indicated by the horizontal dashed line." +#| echo: false +#| message: false + +tar_read(fig_cv_comparison) +``` + +::: {.notes} +- **Optimism Bias:** Notice the "Random CV" column. It shows nearly perfect performance (>0.95 ROC AUC). This is often a "spatial mirage" where the model is simply memorizing locations (autocorrelation) rather than learning environmental drivers. + +- **Spatial Honesty:** The "Block" and "Cluster" columns provide a more realistic estimate of how the model will perform on new, geographically distant areas. This represents the "true" performance we should expect for out-of-sample prediction. + +- **Feature Leakage:** Compare the "With Coords" vs. "No Coords" rows. If the "With Coords" model crashes in performance during Block CV but holds steady in Random CV, it is a clear sign of overfitting to spatial coordinates (Lat/Lon) rather than the underlying forest ecology. + +- **Performance Benchmark:** The dashed line at 0.96 represents an established, high-performance baseline for forest classification. It serves as a "line in the sand" to determine if our machine learning approach provides a meaningful improvement over traditional methods; a model is only truly successful if it can exceed this 0.96 threshold under the pressure of spatial cross-validation. +::: + + +## Performance Stability + + +```{r} +#| label: fig-stability +#| fig-cap: "Distribution of ROC AUC scores across individual cross-validation folds. Note the variance in scores by resampling method." +#| echo: false +#| message: false + +tar_read(fig_model_stability) +``` + +::: {.notes} +- **Falsely Confident:** In **Random CV**, notice how tightly clustered the points are at the top; the model's performance is artificially stable because every fold contains a representative "sprinkling" of the entire dataset. +- **The Reality of Variance:** As we transition to **Cluster CV**, the "violin" stretches out, indicating that the model performs significantly better in some geographic regions than others. +- **Identifying Weak Spots:** Each point in the Cluster CV column represents a specific geographic area; the points near the bottom of the violin represent "hard-to-predict" regions where the model's current features might be insufficient. +- **Predictive Risk:** While Random CV suggests the model is ~98% accurate everywhere, this plot proves that in some clusters, performance may actually dip toward 85%. +- **Stakeholder Transparency:** This variance is a critical insight for stakeholders, as it defines the geographic boundaries of where the model's predictions can be most (and least) trusted. +::: + +## Predict on Test Set + +```{r} +#| label: fig-final-test +tar_read(fig_final_performance) +``` + +::: {.notes} + +- **Beyond the Fold:** This result represents the model's performance on the 20% test set that was "locked away" at the beginning of the project. + +- **The Spatial Paradox:** You will notice our Test AUC (0.97) is actually *higher* than our Validation AUC (0.927). In standard AI, this is rare. In forestry, this tells us two things: + 1. **Interpolation Power:** The high test score proves the model is excellent at "filling in gaps" within Washington, where it can leverage the patterns of nearby trees. + 2. **Extrapolation Power:** The lower (0.927) validation score is our "honest" baseline for new regions, where we stripped away those spatial clues. + +- **Classification Nuance:** The 91% Accuracy vs. 97% ROC suggests our model is a better "ranker" than a "classifier." It understands the *gradient* of forest probability better than the hard binary of "Tree vs. No Tree." + +- **Validation Success:** The fact that our "Honest" Spatial CV score (0.93) is so high confirms that the 0.97 on the test set isn't just a fluke of spatial memory—it's built on a solid foundation of learning spectral signatures. + +::: + +## Test vs. Resample Performance + +
+
+
+ +```{r} +#| label: tbl-performance +#| echo: false +#| tbl-cap: "Comparision of model performance on resamples versus on the test set. Note that ROC increased." + +targets::tar_read(tbl_performance) +``` + +## Confusion Matrix + + +```{r} +#| label: fig-confusion +#| fig-cap: "Confusion matrix showing the classification performance of the final model on the 20% held-out Washington test set." +tar_read(fig_confusion_matrix) +``` + +::: {.notes} +- **Anatomy of Error:** This matrix breaks down our 91.1% accuracy into specific types of successes and failures, helping us move beyond a single aggregate number. +- **Symmetry of Mistakes:** We are looking for balance between the off-diagonal squares; a heavy skew toward one side would indicate the model has a systematic bias toward over-predicting or under-predicting forest cover. +- **False Positives vs. Negatives:** In ecological terms, False Positives often represent "ghost forests" where the structure exists but the classification differs, while False Negatives are "missed forests" where the model failed to detect the canopy signal. +- **Probability Sensitivity:** Since our ROC AUC is a high 0.97, most of these errors likely occur at the "decision boundary"—meaning the model was nearly correct (e.g., 48% probability) but the hard 50% cutoff forced an error. +- **Production Readiness:** The high density in the True Positive and True Negative quadrants confirms that the model is robust enough for regional mapping, despite the inherent complexity of transition zones. +::: + +## Benchmarks + +::: {style="font-size: 75%;"} +| Authority | Study Context | Accuracy | +| :--- | :--- | :--- | +| **Ismail et al. (2013)** | Ideal Conditions (Sclerophyll Forest) | **96%** | +| **USGS NLCD** | Federal Standard (US Gov) | **91%** | +| **Our Model (WA)** | Pacific Northwest Training | **90.7%** | +| **Complex Boreal** | Difficult Terrain (Alaska) | **~78%** | +::: + + +## Spatial Error Analysis + +```{r} +#| label: fig-map-wa-errors +#| out-width: "100%" +#| fig-cap: "Map showing Type I and II errors from model. Points are shaded from purple to bright yellow based upon the absolute error of the prediction probability. Note the lack of errors in the Columbia Basin." + +knitr::include_graphics("figs/wa_errors.png") +``` + +::: {.notes} + +- **The "Hallucinations":** We are looking at the ~130 mistakes the model made on the test set. + +- **Confidence vs. Confusion:** The Red points are where the model was "confidently wrong" (high error magnitude). These aren't just close calls; the model was >90% sure based on the physics features (like elevation/aridity) but missed the biological reality. + +- **Geography of Error:** Notice the clustering. The errors aren't random; they hug the alpine transition zones and the rugged coastline, suggesting the model struggles most at the "biophysical edges" where the rules of the forest change rapidly. +::: + +# Extrapolation + +## The Goal of Prediction {text-align="center"} + +
+
+ +> "The fundamental goal of a model is not to describe the data we have, but to predict the data we don't."[@kuhn_applied_2013] + +::: {.notes} + +- This quote from Kuhn and Johnson is the foundation of our entire project. +- If our model doesn't generalize to the "second island" (Georgia), it has failed its fundamental goal. + +::: + + + +## Assessing Domain Applicability + +```{r} +#| label: fig-aoa-georgia +#| echo: false +#| out-width: "100%" +#| fig-cap: "Area of Applicability (AOA) Analysis. The Dissimilarity Index (DI) measures how different the Georgia environment is from Washington's. Note the similarity to the Level III Ecoregion plot @fig-ecoregion-comparison." + +targets::tar_read(plot_aoa_ga) +``` + +::: {.notes} + +- Before we even attempt to predict forests in Georgia, we have to ask a fundamental question: **Is it fair to ask a Washington model to understand Georgia?** We can't just assume the rules of nature are the same. We need to measure the mathematical distance between these two worlds. + +**What am I looking at?** +- This map **does not** show predictions. It shows **familiarity**. +- We calculated a **Dissimilarity Index** for every pixel in Georgia. Essentially, we asked the model: *"Have you seen conditions like this before?"* +- **Dark Purple/Black:** These areas are the "safe zones." The elevation, temperature, and precipitation here fall within the ranges the model learned in the Cascades. +- **Bright Yellow:** These are the "alien" zones. The combination of variables here (likely the hot, humid lowlands) is completely outside the model's experience. This is pure extrapolation. + +**The Takeaway:** +- This creates a **Risk Map**. If our model fails, we expect it to fail *here* [gesture to yellow areas]. +- It tells us where our confidence should be high (the purple) and where any prediction is just a wild guess (the yellow). +::: + +## External Validation + +```{r} +#| label: fig-ga-predictions +#| echo: false +#| out-width: "100%" +#| fig-cap: "The model predictions of forests in Georgia (a) versus the true forest inventory (b)." + +targets::tar_read(map_ga_probs) +``` + +::: {.notes} + +- We took the model trained in the Pacific Northwest and asked it: "Where are the forests in Georgia?" + +- The Map: This shows the model's raw probability output. + +- The Pattern: You can see it identifying the Blue Ridge Mountains (yellow/green) in the northeast. + +- The Question: Does this match reality? Or is it seeing "forests" in places that are actually agricultural fields or swamps? +::: + +## Quantifying the Error + +```{r} +#| label: fig-ga-confusion +#| echo: false +#| out-width: "80%" +#| fig-align: "center" +#| fig-cap: "Confusion Matrix (Georgia). The model accuracy drops significantly compared to Washington. Note the high number of false negatives.(Prediction: No / Truth: Yes)." + +targets::tar_read(ga_conf_mat) +``` + +## Mapping the Failures + +```{r} +#| label: fig-ga-errors +#| echo: false +#| out-width: "100%" +#| fig-cap: "Spatial Distribution of Errors. (a) shows the dissimilarity of Georgia from Washington. (b) shows error density increasing in southern Georgia." + +targets::tar_read(map_failure_mechanism) + +``` + +::: {.notes} +**Visualizing the "Phantom Forests"** + +- This map only shows the mistakes. And unlike Washington, where we had a handful of dots, here the map is lit up. +- **Orange Points (False Positives):** Look at the massive cluster in the South/Southeast. + - These are the **"Phantom Forests."** + - Notice how they perfectly overlap with the "Yellow Zone" (high dissimilarity) we identified at the start. The model saw crops and scrubland and hallucinated trees. +- **The Verdict:** The error isn't random. It is geographically structured. We broke the model exactly where the AOA predicted it would break. +::: + + +## Lessons Learned + +::: {.incremental} +* **Accuracy Collapse:** ~89% (WA) $\to$ ~54% (GA). +* **AOA Validation:** The "Yellow Zone" correctly flagged the risk. +* **The Trap:** High confidence in "Phantom Forests." +* **The Fix:** Quantify domain distance *before* deployment. +::: + +::: {.notes} +**1. The Numbers Don't Lie** +We witnessed a catastrophic failure in performance. In Washington, we had a precision instrument (90% accuracy). In Georgia, we essentially flipped a coin (54%). If we had deployed this model in production without validation, we would be generating random noise. + +**2. The "Yellow Zone" Was a Warning, Not a Bug** +Remember that bright yellow map? That wasn't just a pretty picture. The Area of Applicability (AOA) screamed at us that the Southeastern Plains were alien territory. The model failed exactly where the AOA said it would—predicting forests in flat, hot agricultural zones it didn't understand. + +**3. The "Phantom Forest" Problem** +Our confusion matrix showed a massive spike in False Positives. This is dangerous. The model didn't say "I don't know"; it confidently declared "Yes, there is a forest here." We call these "Phantom Forests." In a real-world scenario—like carbon credit monitoring or fire risk assessment—phantom forests cost millions of dollars. + +**4. The Ultimate Takeaway** +The model failed, but the **workflow succeeded**. By calculating the multidimensional distance between our training data and our target data, we predicted *where* the model would break before we even ran it. + +**Conclusion:** In spatial data science, you cannot simply "train and deploy." You must respect the ecological boundaries of your training data. +::: + + +# References + +::: {#refs} +::: diff --git a/man/calculate_ga_aoa.Rd b/man/calculate_ga_aoa.Rd new file mode 100644 index 0000000..18eb0b6 --- /dev/null +++ b/man/calculate_ga_aoa.Rd @@ -0,0 +1,22 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{calculate_ga_aoa} +\alias{calculate_ga_aoa} +\title{Calculate Area of Applicability Data} +\usage{ +calculate_ga_aoa(train_data, test_data, predictors) +} +\arguments{ +\item{train_data}{Dataframe. The training data from Washington.} + +\item{test_data}{Dataframe. The extrapolation data from Georgia.} + +\item{predictors}{Character vector. The list of predictor variable names.} +} +\value{ +An \code{sf} object containing the Georgia data with an added 'di' (Dissimilarity Index) column. +} +\description{ +Generates the Area of Applicability (AOA) scores (Dissimilarity Index) +for the Georgia extrapolation dataset based on the Washington training data. +} diff --git a/man/combine_forest.Rd b/man/combine_forest.Rd new file mode 100644 index 0000000..acd6a68 --- /dev/null +++ b/man/combine_forest.Rd @@ -0,0 +1,28 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{combine_forest} +\alias{combine_forest} +\title{Combine Washington and Georgia Forest Data} +\usage{ +combine_forest(wa_data, ga_data) +} +\arguments{ +\item{wa_data}{A data frame containing the Washington forest inventory data.} + +\item{ga_data}{A data frame containing the Georgia forest inventory data.} +} +\value{ +A single combined data frame with an additional column \code{.id} +(renamed to "state") indicating the source ("WA" or "GA"). +} +\description{ +Merges the Washington and Georgia datasets into a single data frame, adding a +column to identify the source state. +} +\examples{ +\dontrun{ + combined <- combine_forest(wa_raw, ga_raw) + table(combined$state) +} + +} diff --git a/man/create_stats_summary.Rd b/man/create_stats_summary.Rd new file mode 100644 index 0000000..8a49751 --- /dev/null +++ b/man/create_stats_summary.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{create_stats_summary} +\alias{create_stats_summary} +\title{Create Statistical Summary of Forest Data} +\usage{ +create_stats_summary(data) +} +\arguments{ +\item{data}{A data frame or sf object containing the forest data.} +} +\value{ +A data frame with descriptive statistics (mean, sd, min, max, etc.), +sorted by descending absolute kurtosis. +} +\description{ +Generates descriptive statistics for numeric variables in the dataset, +excluding spatial coordinates (lat/lon) and year. It sorts the results +by kurtosis to highlight non-normal distributions. +} diff --git a/man/forestedAnalysis-package.Rd b/man/forestedAnalysis-package.Rd new file mode 100644 index 0000000..662b9df --- /dev/null +++ b/man/forestedAnalysis-package.Rd @@ -0,0 +1,15 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/forestedAnalysis-package.R +\docType{package} +\name{forestedAnalysis-package} +\alias{forestedAnalysis} +\alias{forestedAnalysis-package} +\title{forestedAnalysis: Spatial Cross-Validation and AOA Analysis of Forest Cover} +\description{ +A research compendium analyzing forest cover data in Washington and Georgia. It evaluates the Area of Applicability (AOA) and demonstrates model failure during spatial extrapolation. +} +\author{ +\strong{Maintainer}: Rob Wiederstein \email{khuon68@gmail.com} + +} +\keyword{internal} diff --git a/man/get_epa_ecoregions.Rd b/man/get_epa_ecoregions.Rd new file mode 100644 index 0000000..5067f65 --- /dev/null +++ b/man/get_epa_ecoregions.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{get_epa_ecoregions} +\alias{get_epa_ecoregions} +\title{Download EPA Level III Ecoregions Data} +\usage{ +get_epa_ecoregions(url, dest_dir = "data/epa") +} +\arguments{ +\item{url}{Character string. The direct URL to the EPA Ecoregions zip file.} + +\item{dest_dir}{Character string. The local directory where the data should +be saved. Defaults to "data/epa".} +} +\value{ +A character string containing the full file path to the downloaded zip file. +This return value is designed to be tracked by \code{targets}. +} +\description{ +Downloads the EPA Level III Ecoregions shapefile (zip format) +to a local directory. Implements a caching check to avoid re-downloading +if the file already exists. +} diff --git a/man/helper_save_fig.Rd b/man/helper_save_fig.Rd new file mode 100644 index 0000000..05b1783 --- /dev/null +++ b/man/helper_save_fig.Rd @@ -0,0 +1,35 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{helper_save_fig} +\alias{helper_save_fig} +\title{Helper: Save Plot for Quarto Slide} +\usage{ +helper_save_fig( + plot_obj, + name, + type = c("map", "plot"), + width = 10, + height = 6.18, + dpi = 300 +) +} +\arguments{ +\item{plot_obj}{The ggplot object to save.} + +\item{name}{A short descriptive name (e.g., "wa_ecoregions").} + +\item{type}{Either "map" or "plot". Adds this prefix to the filename.} + +\item{width}{Width in inches (default: 10).} + +\item{height}{Height in inches (default: 6.18).} + +\item{dpi}{Resolution (default: 300).} +} +\value{ +The full file path (invisibly). +} +\description{ +Saves a ggplot object as a PNG, sized to fit comfortably +below a standard slide title, with robust font handling. +} diff --git a/man/plot_ecoregion_comparison.Rd b/man/plot_ecoregion_comparison.Rd new file mode 100644 index 0000000..a927b66 --- /dev/null +++ b/man/plot_ecoregion_comparison.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{plot_ecoregion_comparison} +\alias{plot_ecoregion_comparison} +\title{Plot Ecoregion Complexity Comparison (WA vs GA)} +\usage{ +plot_ecoregion_comparison(eco_data) +} +\arguments{ +\item{eco_data}{An \code{sf} object containing ecoregion polygons. Must contain +columns \code{STATE_NAME} and \code{US_L3NAME}.} +} +\value{ +A \code{patchwork} object containing the combined plot. +} +\description{ +Generates a side-by-side comparison of Level III ecoregions for Washington +and Georgia. It uses a "void" theme, qualitative colors, and carefully tuned +label repulsion settings to avoid overlapping text. +} diff --git a/man/plot_failure_mechanism.Rd b/man/plot_failure_mechanism.Rd new file mode 100644 index 0000000..db93aea --- /dev/null +++ b/man/plot_failure_mechanism.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{plot_failure_mechanism} +\alias{plot_failure_mechanism} +\title{Plot Failure Mechanism Comparison} +\usage{ +plot_failure_mechanism(aoa_data, pred_data, boundaries) +} +\arguments{ +\item{aoa_data}{Dataframe containing the AOA results (must have 'di', 'lon', 'lat').} + +\item{pred_data}{Dataframe containing prediction results (columns: .pred_class, forested, lon, lat).} + +\item{boundaries}{An \code{sf} object containing state boundaries (must include "GA" or "Georgia").} +} +\value{ +A \code{patchwork} object containing the side-by-side comparison. +} +\description{ +Creates a side-by-side diagnostic plot returning a patchwork object. +(a) The Area of Applicability (Dissimilarity Index) showing where the model is extrapolating. +(b) The spatial distribution of actual classification errors. +} diff --git a/man/plot_ga_comparison_map.Rd b/man/plot_ga_comparison_map.Rd new file mode 100644 index 0000000..10b90ac --- /dev/null +++ b/man/plot_ga_comparison_map.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{plot_ga_comparison_map} +\alias{plot_ga_comparison_map} +\title{Plot Georgia Forest Comparison} +\usage{ +plot_ga_comparison_map(pred_data, boundaries) +} +\arguments{ +\item{pred_data}{Dataframe containing prediction results (columns: .pred_class, forested, lon, lat).} + +\item{boundaries}{An \code{sf} object containing state boundaries (must include "GA" or "Georgia").} +} +\value{ +A \code{patchwork} object containing the labeled comparison plot. +} +\description{ +Creates a side-by-side comparison of forest cover for Georgia. +The left plot (a) is the Model Prediction, and the right plot (b) is the Actual Data. +Features a shared right-side legend and standardized spatial styling. +} diff --git a/man/plot_georgia_aoa.Rd b/man/plot_georgia_aoa.Rd new file mode 100644 index 0000000..522abf5 --- /dev/null +++ b/man/plot_georgia_aoa.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{plot_georgia_aoa} +\alias{plot_georgia_aoa} +\title{Plot Georgia Area of Applicability (AOA)} +\usage{ +plot_georgia_aoa(aoa_sf) +} +\arguments{ +\item{aoa_sf}{An \code{sf} object containing the 'di' column (output of \code{calculate_ga_aoa}).} +} +\value{ +A \code{ggplot} object showing the Dissimilarity Index map. +} +\description{ +Plots the pre-calculated Dissimilarity Index (DI) for Georgia. +} diff --git a/man/plot_precip_hex_comparison.Rd b/man/plot_precip_hex_comparison.Rd new file mode 100644 index 0000000..2be6e4d --- /dev/null +++ b/man/plot_precip_hex_comparison.Rd @@ -0,0 +1,34 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{plot_precip_hex_comparison} +\alias{plot_precip_hex_comparison} +\title{Plot Annual Rainfall Comparison (Clipped Hexes)} +\usage{ +plot_precip_hex_comparison( + wa_data, + ga_data, + boundaries, + bins = 30, + max_limit = 2500 +) +} +\arguments{ +\item{wa_data}{Dataframe containing Washington data (requires 'precip_annual', 'lat', 'lon').} + +\item{ga_data}{Dataframe containing Georgia data (requires 'precip_annual', 'lat', 'lon').} + +\item{boundaries}{An \code{sf} object containing state boundaries.} + +\item{bins}{Integer. Number of hexes across the state width. Default is 30.} + +\item{max_limit}{Numeric. The visual cap for rainfall (mm) to ensure comparable scales. Default is 2500.} +} +\value{ +A \code{patchwork} object containing the side-by-side comparison. +} +\description{ +Creates a polished side-by-side comparison of annual precipitation. +Hexagons are spatially generated and clipped to the exact state boundaries +to eliminate "bleeding" edges. Uses \code{theme_forestry_void} with explicit +font sizing to match topographic maps. +} diff --git a/man/plot_regional_comparison.Rd b/man/plot_regional_comparison.Rd new file mode 100644 index 0000000..6018f40 --- /dev/null +++ b/man/plot_regional_comparison.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{plot_regional_comparison} +\alias{plot_regional_comparison} +\title{Plot Regional Comparison of Forested Data (WA vs GA)} +\usage{ +plot_regional_comparison(data, boundaries) +} +\arguments{ +\item{data}{A data frame containing the forest point data. Must contain +columns \code{lon}, \code{lat}, \code{state}, and \code{forested}.} + +\item{boundaries}{An \code{sf} object containing state boundaries. Must contain +a \code{NAME} column.} +} +\value{ +A \code{patchwork} object containing the combined side-by-side maps. +} +\description{ +Generates a side-by-side comparison of forest cover for Washington +and Georgia. It handles font registration (Atkinson Hyperlegible), spatial +transformations, and creates a combined plot with a shared legend. +} diff --git a/man/plot_rf_importance.Rd b/man/plot_rf_importance.Rd new file mode 100644 index 0000000..a973ac8 --- /dev/null +++ b/man/plot_rf_importance.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{plot_rf_importance} +\alias{plot_rf_importance} +\title{Plot Random Forest Variable Importance} +\usage{ +plot_rf_importance(data) +} +\arguments{ +\item{data}{An sf object or data frame containing the 'forested' target and predictors.} +} +\description{ +Fits a ranger Random Forest model to the provided data, calculates +permutation importance, and generates a lollipop chart. It distinguishes +between spatial (lat/lon) and biophysical predictors. +Uses the project's 'Atkinson' font theme via theme_forestry_plot(). +} diff --git a/man/plot_spatial_exploration.Rd b/man/plot_spatial_exploration.Rd new file mode 100644 index 0000000..c310f8d --- /dev/null +++ b/man/plot_spatial_exploration.Rd @@ -0,0 +1,18 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{plot_spatial_exploration} +\alias{plot_spatial_exploration} +\title{Plot Spatial Autocorrelation Exploration} +\usage{ +plot_spatial_exploration(wa_data) +} +\arguments{ +\item{wa_data}{A dataframe or tibble containing elevation, lat, and lon columns.} +} +\value{ +A ggplot object showing standardized elevation vs. spatially lagged elevation. +} +\description{ +Generates a Moran Scatterplot to visualize spatial +autocorrelation in elevation data using a 5km neighborhood. +} diff --git a/man/plot_state_topo.Rd b/man/plot_state_topo.Rd new file mode 100644 index 0000000..61dc61e --- /dev/null +++ b/man/plot_state_topo.Rd @@ -0,0 +1,11 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{plot_state_topo} +\alias{plot_state_topo} +\title{Create Single State Topo Plot} +\usage{ +plot_state_topo(data, boundary_sf, raster_path, state_name) +} +\description{ +Generates a topo map with manually tuned label placement for Georgia. +} diff --git a/man/plot_theme_diagnostic.Rd b/man/plot_theme_diagnostic.Rd new file mode 100644 index 0000000..2aa4621 --- /dev/null +++ b/man/plot_theme_diagnostic.Rd @@ -0,0 +1,11 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{plot_theme_diagnostic} +\alias{plot_theme_diagnostic} +\title{Simplified Theme Diagnostic} +\usage{ +plot_theme_diagnostic() +} +\description{ +Uses built-in NC data to verify theme_forestry_spatial. +} diff --git a/man/plot_us_map.Rd b/man/plot_us_map.Rd new file mode 100644 index 0000000..bcff29b --- /dev/null +++ b/man/plot_us_map.Rd @@ -0,0 +1,11 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{plot_us_map} +\alias{plot_us_map} +\title{Plot US Map with Forestry Theme} +\usage{ +plot_us_map() +} +\description{ +Highlights Washington and Georgia using standardized presentation fonts. +} diff --git a/man/process_ecoregions.Rd b/man/process_ecoregions.Rd new file mode 100644 index 0000000..9d6e7a4 --- /dev/null +++ b/man/process_ecoregions.Rd @@ -0,0 +1,32 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{process_ecoregions} +\alias{process_ecoregions} +\title{Process and Clip EPA Ecoregions} +\usage{ +process_ecoregions( + zip_path, + target_states = c("Washington", "Georgia"), + simplify_tol = 0.05 +) +} +\arguments{ +\item{zip_path}{Character string. The file path to the zipped EPA shapefile.} + +\item{target_states}{Character vector. The names of the states to clip the +ecoregions to. Defaults to \code{c("Washington", "Georgia")}.} + +\item{simplify_tol}{Numeric. The simplification tolerance passed to +\code{rmapshaper::ms_simplify}. Range is 0-1, where higher numbers remove more detail. +Defaults to 0.05.} +} +\value{ +An \code{sf} object containing the processed ecoregions with standardized +columns \code{US_L3NAME} and \code{STATE_NAME}. +} +\description{ +Extracts EPA Level III ecoregion data from a zipped shapefile, +standardizes column names, and clips the geometry to specified state boundaries. +It includes robust steps for geometry repair (handling spherical validity), +small island removal, and simplification for optimized plotting. +} diff --git a/man/save_combined_topo.Rd b/man/save_combined_topo.Rd new file mode 100644 index 0000000..99ca73c --- /dev/null +++ b/man/save_combined_topo.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{save_combined_topo} +\alias{save_combined_topo} +\title{Save Combined Side-by-Side Topo Plot} +\usage{ +save_combined_topo( + wa_data, + ga_data, + wa_boundary, + ga_boundary, + wa_raster_path, + ga_raster_path, + output_path +) +} +\description{ +Save Combined Side-by-Side Topo Plot +} diff --git a/man/save_error_map_png.Rd b/man/save_error_map_png.Rd new file mode 100644 index 0000000..5c19829 --- /dev/null +++ b/man/save_error_map_png.Rd @@ -0,0 +1,26 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{save_error_map_png} +\alias{save_error_map_png} +\title{Save Model Error Diagnostic Map} +\usage{ +save_error_map_png(data, boundary_sf, raster_path, output_path) +} +\arguments{ +\item{data}{A data frame containing model predictions (must include '.pred_class', +'forested', '.pred_Yes', 'lon', and 'lat').} + +\item{boundary_sf}{An \code{sf} object representing the state boundary.} + +\item{raster_path}{Character string. File path to the elevation raster (.tif).} + +\item{output_path}{Character string. File path where the PNG will be saved.} +} +\value{ +The \code{output_path} (invisible), for integration with \code{targets}. +} +\description{ +Generates a diagnostic map highlighting prediction errors. It plots +misclassified points colored by the magnitude of the error (confidence in the wrong answer) +over a hillshaded elevation background. +} diff --git a/man/save_outlier_map_png.Rd b/man/save_outlier_map_png.Rd new file mode 100644 index 0000000..1df098e --- /dev/null +++ b/man/save_outlier_map_png.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{save_outlier_map_png} +\alias{save_outlier_map_png} +\title{Save Outlier Diagnostic Map} +\usage{ +save_outlier_map_png(data, boundary_sf, raster_path, output_path) +} +\arguments{ +\item{data}{A data frame containing the analysis dataset (must include numeric columns and 'forested' factor).} + +\item{boundary_sf}{An \code{sf} object representing the state boundary (e.g., Washington).} + +\item{raster_path}{Character string. File path to the elevation raster (.tif).} + +\item{output_path}{Character string. File path where the PNG will be saved.} +} +\value{ +The \code{output_path} (invisible), for integration with \code{targets}. +} +\description{ +Generates a diagnostic map highlighting multivariate outliers (Z > 3) +overlaid on a hillshaded elevation raster. Uses the standardized forestry theme. +} diff --git a/man/setup_forestry_fonts.Rd b/man/setup_forestry_fonts.Rd new file mode 100644 index 0000000..37fd8e4 --- /dev/null +++ b/man/setup_forestry_fonts.Rd @@ -0,0 +1,15 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{setup_forestry_fonts} +\alias{setup_forestry_fonts} +\title{Register Project Fonts} +\usage{ +setup_forestry_fonts() +} +\value{ +NULL (called for side effects) +} +\description{ +Registers 'Atkinson Hyperlegible Next' (Sans) and 'Atkinson Hyperlegible Mono' +(Monospace) with the sysfonts package for use in R graphics. +} diff --git a/man/style_audit_table.Rd b/man/style_audit_table.Rd new file mode 100644 index 0000000..59a27d1 --- /dev/null +++ b/man/style_audit_table.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{style_audit_table} +\alias{style_audit_table} +\title{Style Audit Table (GT)} +\usage{ +style_audit_table(data, title = NULL, subtitle = NULL) +} +\arguments{ +\item{data}{A data frame to be formatted.} + +\item{title}{Character string. The title of the table (optional).} +} +\value{ +A \code{gt_tbl} object ready for rendering. +} +\description{ +Converts a data frame into a formatted \code{gt} table with consistent +styling for audit reports. Includes row striping, numeric formatting, and +standardized font sizes. +} diff --git a/man/theme_forestry_plot.Rd b/man/theme_forestry_plot.Rd new file mode 100644 index 0000000..f20e426 --- /dev/null +++ b/man/theme_forestry_plot.Rd @@ -0,0 +1,18 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{theme_forestry_plot} +\alias{theme_forestry_plot} +\title{Standard Forestry Plot Theme (Cowplot + Atkinson)} +\usage{ +theme_forestry_plot(font_size = 14, grid = TRUE) +} +\arguments{ +\item{font_size}{Integer. Base font size. Default is 14 (good for slides).} + +\item{grid}{Logical. If TRUE, adds a light gray grid (useful for presentations).} +} +\description{ +A standardized theme for non-spatial plots (scatter, bar, line). +Based on cowplot::theme_cowplot(), it includes clean axes and a minimalist look. +Uses 'Atkinson Hyperlegible Next' for all text. +} diff --git a/man/theme_forestry_spatial.Rd b/man/theme_forestry_spatial.Rd new file mode 100644 index 0000000..1b3234f --- /dev/null +++ b/man/theme_forestry_spatial.Rd @@ -0,0 +1,11 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{theme_forestry_spatial} +\alias{theme_forestry_spatial} +\title{Standardized Spatial Theme (Atkinson)} +\usage{ +theme_forestry_spatial(base_size = 16) +} +\description{ +High-visibility map theme for presentations using Atkinson fonts. +} diff --git a/man/theme_forestry_void.Rd b/man/theme_forestry_void.Rd new file mode 100644 index 0000000..b6b5a4d --- /dev/null +++ b/man/theme_forestry_void.Rd @@ -0,0 +1,11 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/functions.R +\name{theme_forestry_void} +\alias{theme_forestry_void} +\title{Standardized Void Theme (Maximal Data Ink)} +\usage{ +theme_forestry_void(base_size = 16) +} +\description{ +Removes axes/grids for shape-focused maps, but keeps project fonts. +} diff --git a/references.bib b/references.bib new file mode 100644 index 0000000..6c73ee2 --- /dev/null +++ b/references.bib @@ -0,0 +1,140 @@ +@misc{epa_ecoregions_2013, + title = {Level {{III}} and {{IV Ecoregions}} of the {{Continental United States}}}, + author = {{U.S. Environmental Protection Agency}}, + year = 2013, + address = {Corvallis, OR}, + urldate = {2026-01-13} +} + +@article{frescino_fiesta_2023, + title = {`{{FIESTA}}': A Forest Inventory Estimation and Analysis {{R}} Package}, + shorttitle = {`{{FIESTA}}'}, + author = {Frescino, Tracey S. and Moisen, Gretchen G. and Patterson, Paul L. and Toney, Chris and White, Grayson W.}, + year = 2023, + month = jul, + journal = {Ecography}, + volume = {2023}, + number = {7}, + pages = {e06428}, + issn = {0906-7590, 1600-0587}, + doi = {10.1111/ecog.06428}, + urldate = {2026-01-14}, + abstract = {Ecologists are increasingly relying on national forest inventories to address a wide variety of issues. The `FIESTA' R package (Forest Inventory ESTimation and Analysis) is a tool that enables customized investigations using the extensive sample-based inventory data collected across all lands in the US by the US Dept of Agriculture, Forest Service, Forest Inventory and Analysis (FIA) Program. To date, the complex nature of the FIA inventory constrains many users to conduct only limited analyses through existing tools with pre-specified geographic boundaries, timeframes, and auxiliary data under a single statistical estimation process. Yet, the rapid evolution of available remotely sensed data and statistical methods present the opportunity to conduct spatial and temporal analyses of forest attributes that are much more relevant to many pressing ecological, environmental, economic, and social issues in the US, The `FIESTA' package was developed to augment the current set of available tools by providing a flexible platform that accommodates evolving technologies and leading-edge estimation techniques. The package contains a collection of functions that can query FIA databases, summarize sample-based inventory data, extract and aggregate auxiliary spatial data, and generate estimates with associated variances. The `FIESTA' R package is available on CRAN ( https://cran.r-project.org/package=FIESTA ).}, + langid = {english} +} + +@book{kuhn_applied_2013, + title = {Applied {{Predictive Modeling}}}, + author = {Kuhn, Max and Johnson, Kjell}, + year = 2013, + publisher = {Springer}, + address = {New York, NY}, + doi = {10.1007/978-1-4614-6849-3}, + urldate = {2026-01-22}, + copyright = {http://www.springer.com/tdm}, + isbn = {978-1-4614-6848-6 978-1-4614-6849-3}, + langid = {english}, + keywords = {Model,Non-Linear,Predictive Models,R,Regression Models,Regression Trees} +} + +@book{kuhn_tidy_2022, + title = {Tidy {{Modeling}} with {{R}}}, + author = {Kuhn, Max}, + year = 2022, + publisher = {O'Reilly Media, Incorporated}, + address = {Sebastopol}, + urldate = {2026-01-13}, + collaborator = {Silge, Julia}, + isbn = {978-1-4920-9648-1 978-1-4920-9644-3}, + langid = {english} +} + +@article{omernik_ecoregions_1987, + title = {Ecoregions of the {{Conterminous United States}}}, + author = {Omernik, James M.}, + year = 1987, + month = mar, + journal = {Annals of the Association of American Geographers}, + volume = {77}, + number = {1}, + pages = {118--125}, + issn = {0004-5608, 1467-8306}, + doi = {10.1111/j.1467-8306.1987.tb00149.x}, + urldate = {2026-01-13}, + langid = {english} +} + +@misc{pebesma_spatial_2025, + title = {Spatial {{Data Science}}}, + author = {Pebesma, Edzer and Bivand, Roger}, + year = 2025, + month = jan, + urldate = {2026-01-17}, + howpublished = {https://r-spatial.org/book/}, + langid = {english}, + file = {/home/rkw/Zotero/storage/ZNFK3H6Q/book.html} +} + +@article{roberts_crossvalidation_2017, + title = {Cross-validation Strategies for Data with Temporal, Spatial, Hierarchical, or Phylogenetic Structure}, + shorttitle = {Cross-Validation}, + author = {Roberts, David R. and Bahn, Volker and Ciuti, Simone and Boyce, Mark S. and Elith, Jane and Guillera-Arroita, Gurutzeta and Hauenstein, Severin and Lahoz-Monfort, Jos{\'e} J. and Schr{\"o}der, Boris and Thuiller, Wilfried and Warton, David I. and Wintle, Brendan A. and Hartig, Florian and Dormann, Carsten F.}, + year = 2017, + month = aug, + journal = {Ecography}, + volume = {40}, + number = {8}, + pages = {913--929}, + issn = {0906-7590, 1600-0587}, + doi = {10.1111/ecog.02881}, + urldate = {2026-01-11}, + abstract = {Ecological data often show temporal, spatial, hierarchical (random effects), or phylogenetic structure. Modern statistical approaches are increasingly accounting for such dependencies. However, when performing cross-validation, these structures are regularly ignored, resulting in serious underestimation of predictive error. One cause for the poor performance of uncorrected (random) cross-validation, noted often by modellers, are dependence structures in the data that persist as dependence structures in model residuals, violating the assumption of independence. Even more concerning, because often overlooked, is that structured data also provides ample opportunity for overfitting with non-causal predictors. This problem can persist even if remedies such as autoregressive models, generalized least squares, or mixed models are used. Block cross-validation, where data are split strategically rather than randomly, can address these issues. However, the blocking strategy must be carefully considered. Blocking in space, time, random effects or phylogenetic distance, while accounting for dependencies in the data, may also unwittingly induce extrapolations by restricting the ranges or combinations of predictor variables available for model training, thus overestimating interpolation errors. On the other hand, deliberate blocking in predictor space may also improve error estimates when extrapolation is the modelling goal. Here, we review the ecological literature on non-random and blocked cross-validation approaches. We also provide a series of simulations and case studies, in which we show that, for all instances tested, block cross-validation is nearly universally more appropriate than random cross-validation if the goal is predicting to new data or predictor space, or for selecting causal predictors. We recommend that block cross-validation be used wherever dependence structures exist in a dataset, even if no correlation structure is visible in the fitted model residuals, or if the fitted models account for such correlations.}, + langid = {english}, + file = {/home/rkw/Zotero/storage/JFMJE6FR/Roberts et al. - 2017 - Cross‐validation strategies for data with temporal, spatial, hierarchical, or phylogenetic structure.pdf} +} + +@article{tobler_computer_1970, + title = {A {{Computer Movie Simulating Urban Growth}} in the {{Detroit Region}}}, + author = {Tobler, W. R.}, + year = 1970, + month = jun, + journal = {Economic Geography}, + publisher = {Routledge}, + urldate = {2026-01-22}, + abstract = {(1970). A Computer Movie Simulating Urban Growth in the Detroit Region. Economic Geography: Vol. 46, PROCEEDINGS International Geographical Union Commission on Quantitative Methods, pp. 234-240.}, + copyright = {\copyright{} 1970 Taylor and Francis Group, LLC}, + langid = {english}, + file = {/home/rkw/Zotero/storage/75EV82QZ/143141.html} +} + +@article{white_method_2025, + title = {A Method for Empirically Assessing Small Area Estimators via Bootstrap-Weighted k-Nearest-Neighbor Artificial Populations, with Applications to Forest Inventory}, + author = {White, Grayson W and Wieczorek, Jerzy A and Cody, Zachariah W and Tan, Emily X and Chistolini, Jacqueline O and McConville, Kelly S and Frescino, Tracey S and Moisen, Gretchen G}, + editor = {Fassnacht, Fabian}, + year = 2025, + month = nov, + journal = {Forestry: An International Journal of Forest Research}, + pages = {cpaf071}, + issn = {0015-752X, 1464-3626}, + doi = {10.1093/forestry/cpaf071}, + urldate = {2026-01-14}, + abstract = {Abstract National Forest Inventories monitor forest attributes across a variety of spatial and temporal scales in a given country. Increased interest in reporting and management at smaller scales has driven National Forest Inventories to investigate and adopt small area estimation (SAE) due to the promise of increased precision at these scales. However, comparing and evaluating SAE models for a given application is inherently difficult. Typically, many areas lack enough data to check unit-level modeling assumptions or to assess unit-level predictions empirically; and no ground truth is available for checking area-level estimates. Design-based simulation from artificial populations can help with each of these issues, but only if the artificial populations realistically represent the application at hand and are not built using assumptions that inherently favor one SAE model over another. In this paper, we borrow ideas from random hot deck, approximate Bayesian bootstrap, and \$k\$ nearest neighbor imputation methods to propose a \$k\$ nearest neighbor-based approximation to approximate Bayesian bootstrap, for generating an artificial population when rich unit-level auxiliary data are available. We introduce diagnostic checks on the process of building the artificial population, and demonstrate how to use it for design-based simulation studies to compare and evaluate SAE models, using real data from the Forest Inventory and Analysis program of the United States Department of Agriculture Forest Service (the National Forest Inventory of the United States).}, + copyright = {https://creativecommons.org/licenses/by/4.0/}, + langid = {english} +} + +@article{white_small_2025, + title = {Small Area Estimation of Forest Biomass via a Two-Stage Model for Continuous Zero-Inflated Data}, + author = {White, Grayson W. and Yamamoto, Josh K. and Elsyad, Dinan H. and Schmitt, Julian F. and Korsgaard, Niels H. and Hu, Jie Kate and Gaines, George C. and Frescino, Tracey S. and McConville, Kelly S.}, + year = 2025, + month = jan, + journal = {Canadian Journal of Forest Research}, + volume = {55}, + pages = {1--19}, + issn = {0045-5067, 1208-6037}, + doi = {10.1139/cjfr-2024-0149}, + urldate = {2026-01-14}, + abstract = {Nationwide Forest Inventories (NFIs) collect data on and monitor the trends of forests across the globe. Users of NFI data are increasingly interested in monitoring forest attributes such as biomass at fine geographic and temporal scales, resulting in a need for assessment and development of small area estimation techniques in forest inventory. We implement a small area estimator and parametric bootstrap estimator that account for zero-inflation in biomass data via a two-stage model-based approach and compare the performance to a Horvitz--Thompson estimator, a post-stratified estimator, and to the unit- and area-level empirical best linear unbiased prediction (EBLUP) estimators. We conduct a simulation study in Nevada with data from the United States NFI, the Forest Inventory and Analysis Program, and remote sensing data products. Results show the zero-inflated estimator has the lowest relative bias and the smallest empirical root mean square error. Moreover, the 95\% confidence interval coverages of the zero-inflated estimator and the unit-level EBLUP are more accurate than the other two estimators. To further illustrate the practical utility, we employ a data application across the 2019 measurement year in Nevada. We introduce the R package, saeczi, which efficiently implements the zero-inflated estimator and its mean squared error estimator.}, + langid = {english}, + file = {/home/rkw/Zotero/storage/VSX6A8MF/White et al. - 2025 - Small area estimation of forest biomass via a two-stage model for continuous zero-inflated data.pdf} +} diff --git a/renv.lock b/renv.lock new file mode 100644 index 0000000..116b2dc --- /dev/null +++ b/renv.lock @@ -0,0 +1,8995 @@ +{ + "R": { + "Version": "4.5.2", + "Repositories": [ + { + "Name": "P3M", + "URL": "https://packagemanager.posit.co/cran/latest" + }, + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "DBI": { + "Package": "DBI", + "Version": "1.2.3", + "Source": "Repository", + "Title": "R Database Interface", + "Date": "2024-06-02", + "Authors@R": "c( person(\"R Special Interest Group on Databases (R-SIG-DB)\", role = \"aut\"), person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"R Consortium\", role = \"fnd\") )", + "Description": "A database interface definition for communication between R and relational database management systems. All classes in this package are virtual and need to be extended by the various R/DBMS implementations.", + "License": "LGPL (>= 2.1)", + "URL": "https://dbi.r-dbi.org, https://github.com/r-dbi/DBI", + "BugReports": "https://github.com/r-dbi/DBI/issues", + "Depends": [ + "methods", + "R (>= 3.0.0)" + ], + "Suggests": [ + "arrow", + "blob", + "covr", + "DBItest", + "dbplyr", + "downlit", + "dplyr", + "glue", + "hms", + "knitr", + "magrittr", + "nanoarrow (>= 0.3.0.1)", + "RMariaDB", + "rmarkdown", + "rprojroot", + "RSQLite (>= 1.1-2)", + "testthat (>= 3.0.0)", + "vctrs", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "false", + "Config/Needs/check": "r-dbi/DBItest", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "Config/Needs/website": "r-dbi/DBItest, r-dbi/dbitemplate, adbi, AzureKusto, bigrquery, DatabaseConnector, dittodb, duckdb, implyr, lazysf, odbc, pool, RAthena, IMSMWU/RClickhouse, RH2, RJDBC, RMariaDB, RMySQL, RPostgres, RPostgreSQL, RPresto, RSQLite, sergeant, sparklyr, withr", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "R Special Interest Group on Databases (R-SIG-DB) [aut], Hadley Wickham [aut], Kirill Müller [aut, cre] (), R Consortium [fnd]", + "Maintainer": "Kirill Müller ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "DiceDesign": { + "Package": "DiceDesign", + "Version": "1.10", + "Source": "Repository", + "Type": "Package", + "Title": "Designs of Computer Experiments", + "Date": "2023-11-30", + "Author": "Jessica Franco, Delphine Dupuy, Olivier Roustant, Patrice Kiener, Guillaume Damblin and Bertrand Iooss.", + "Maintainer": "Celine Helbert ", + "Description": "Space-Filling Designs and space-filling criteria (distance-based and uniformity-based), with emphasis to computer experiments; .", + "License": "GPL-3", + "Depends": [ + "R (>= 2.10)" + ], + "Suggests": [ + "rgl", + "randtoolbox", + "lattice" + ], + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "LazyData": "true", + "Repository": "RSPM" + }, + "FNN": { + "Package": "FNN", + "Version": "1.1.4.1", + "Source": "Repository", + "Date": "2023-12-31", + "Title": "Fast Nearest Neighbor Search Algorithms and Applications", + "Authors@R": "c(person(\"Alina\", \"Beygelzimer\", role = \"aut\", comment = \"cover tree library\"), person(\"Sham\", \"Kakadet\", role = \"aut\", comment = \"cover tree library\"), person(\"John\", \"Langford\", role = \"aut\", comment = \"cover tree library\"), person(\"Sunil\", \"Arya\", role = \"aut\", comment = \"ANN library 1.1.2 for the kd-tree approach\"), person(\"David\", \"Mount\", role = \"aut\", comment = \"ANN library 1.1.2 for the kd-tree approach\"), person(\"Shengqiao\", \"Li\", role = c(\"aut\", \"cre\"), email = \"lishengqiao@yahoo.com\"))", + "Copyright": "ANN Copyright (c) 1997-2010 University of Maryland and Sunil Arya and David Mount. All Rights Reserved.", + "Depends": [ + "R (>= 4.0.0)" + ], + "Suggests": [ + "chemometrics", + "mvtnorm" + ], + "Description": "Cover-tree and kd-tree fast k-nearest neighbor search algorithms and related applications including KNN classification, regression and information measures are implemented.", + "License": "GPL (>= 2)", + "NeedsCompilation": "yes", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Author": "Alina Beygelzimer [aut] (cover tree library), Sham Kakadet [aut] (cover tree library), John Langford [aut] (cover tree library), Sunil Arya [aut] (ANN library 1.1.2 for the kd-tree approach), David Mount [aut] (ANN library 1.1.2 for the kd-tree approach), Shengqiao Li [aut, cre]", + "Maintainer": "Shengqiao Li ", + "Encoding": "UTF-8" + }, + "Formula": { + "Package": "Formula", + "Version": "1.2-5", + "Source": "Repository", + "Date": "2023-02-23", + "Title": "Extended Model Formulas", + "Description": "Infrastructure for extended formulas with multiple parts on the right-hand side and/or multiple responses on the left-hand side (see ).", + "Authors@R": "c(person(given = \"Achim\", family = \"Zeileis\", role = c(\"aut\", \"cre\"), email = \"Achim.Zeileis@R-project.org\", comment = c(ORCID = \"0000-0003-0918-3766\")), person(given = \"Yves\", family = \"Croissant\", role = \"aut\", email = \"Yves.Croissant@univ-reunion.fr\"))", + "Depends": [ + "R (>= 2.0.0)", + "stats" + ], + "License": "GPL-2 | GPL-3", + "NeedsCompilation": "no", + "Author": "Achim Zeileis [aut, cre] (), Yves Croissant [aut]", + "Maintainer": "Achim Zeileis ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "GPArotation": { + "Package": "GPArotation", + "Version": "2025.3-1", + "Source": "Repository", + "Title": "Gradient Projection Factor Rotation", + "Authors@R": "c( person(\"Coen\", \"Bernaards\", email = \"cab.gparotation@gmail.com\", role = c(\"aut\",\"cre\")), person(\"Paul\", \"Gilbert\", email = \"pgilbert.ttv9z@ncf.ca\", role = \"aut\"), person(\"Robert\", \"Jennrich\", role = \"aut\") )", + "Depends": [ + "R (>= 2.0.0)" + ], + "Description": "Gradient Projection Algorithms for Factor Rotation. For details see ?GPArotation. When using this package, please cite Bernaards and Jennrich (2005) 'Gradient Projection Algorithms and Software for Arbitrary Rotation Criteria in Factor Analysis'.", + "LazyData": "yes", + "Imports": [ + "stats" + ], + "License": "GPL (>= 2)", + "URL": "https://optimizer.r-forge.r-project.org/GPArotation_www/", + "NeedsCompilation": "no", + "Author": "Coen Bernaards [aut, cre], Paul Gilbert [aut], Robert Jennrich [aut]", + "Maintainer": "Coen Bernaards ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "GPfit": { + "Package": "GPfit", + "Version": "1.0-9", + "Source": "Repository", + "Title": "Gaussian Processes Modeling", + "Authors@R": "c( person(\"Blake\", \"MacDoanld\", role = \"aut\"), person(\"Hugh\", \"Chipman\", email = \"hugh.chipman@acadiau.ca\", role = c(\"aut\", \"cre\")), person(\"Chris\", \"Campbell\", email = \"ccampbell@mango-solutions.com\", role = \"ctb\"), person(\"Pritam\", \"Ranjan\", role = \"aut\"))", + "Author": "Blake MacDoanld [aut], Hugh Chipman [aut, cre], Chris Campbell [ctb], Pritam Ranjan [aut]", + "Maintainer": "Hugh Chipman ", + "Description": "A computationally stable approach of fitting a Gaussian Process (GP) model to a deterministic simulator.", + "Imports": [ + "lhs (>= 0.5)", + "lattice (>= 0.18-8)" + ], + "Suggests": [ + "testthat" + ], + "License": "GPL-2", + "NeedsCompilation": "no", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "Repository": "RSPM" + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-26", + "Source": "Repository", + "Priority": "recommended", + "Date": "2024-12-10", + "Title": "Functions for Kernel Smoothing Supporting Wand & Jones (1995)", + "Authors@R": "c(person(\"Matt\", \"Wand\", role = \"aut\", email = \"Matt.Wand@uts.edu.au\"), person(\"Cleve\", \"Moler\", role = \"ctb\", comment = \"LINPACK routines in src/d*\"), person(\"Brian\", \"Ripley\", role = c(\"trl\", \"cre\", \"ctb\"), email = \"Brian.Ripley@R-project.org\", comment = \"R port and updates\"))", + "Note": "Maintainers are not available to give advice on using a package they did not author.", + "Depends": [ + "R (>= 2.5.0)", + "stats" + ], + "Suggests": [ + "MASS", + "carData" + ], + "Description": "Functions for kernel smoothing (and density estimation) corresponding to the book: Wand, M.P. and Jones, M.C. (1995) \"Kernel Smoothing\".", + "License": "Unlimited", + "ByteCompile": "yes", + "NeedsCompilation": "yes", + "Author": "Matt Wand [aut], Cleve Moler [ctb] (LINPACK routines in src/d*), Brian Ripley [trl, cre, ctb] (R port and updates)", + "Maintainer": "Brian Ripley ", + "Repository": "CRAN" + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-65", + "Source": "Repository", + "Priority": "recommended", + "Date": "2025-02-19", + "Revision": "$Rev: 3681 $", + "Depends": [ + "R (>= 4.4.0)", + "grDevices", + "graphics", + "stats", + "utils" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "lattice", + "nlme", + "nnet", + "survival" + ], + "Authors@R": "c(person(\"Brian\", \"Ripley\", role = c(\"aut\", \"cre\", \"cph\"), email = \"Brian.Ripley@R-project.org\"), person(\"Bill\", \"Venables\", role = c(\"aut\", \"cph\")), person(c(\"Douglas\", \"M.\"), \"Bates\", role = \"ctb\"), person(\"Kurt\", \"Hornik\", role = \"trl\", comment = \"partial port ca 1998\"), person(\"Albrecht\", \"Gebhardt\", role = \"trl\", comment = \"partial port ca 1998\"), person(\"David\", \"Firth\", role = \"ctb\", comment = \"support functions for polr\"))", + "Description": "Functions and datasets to support Venables and Ripley, \"Modern Applied Statistics with S\" (4th edition, 2002).", + "Title": "Support Functions and Datasets for Venables and Ripley's MASS", + "LazyData": "yes", + "ByteCompile": "yes", + "License": "GPL-2 | GPL-3", + "URL": "http://www.stats.ox.ac.uk/pub/MASS4/", + "Contact": "", + "NeedsCompilation": "yes", + "Author": "Brian Ripley [aut, cre, cph], Bill Venables [aut, cph], Douglas M. Bates [ctb], Kurt Hornik [trl] (partial port ca 1998), Albrecht Gebhardt [trl] (partial port ca 1998), David Firth [ctb] (support functions for polr)", + "Maintainer": "Brian Ripley ", + "Repository": "CRAN" + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.7-4", + "Source": "Repository", + "VersionNote": "do also bump src/version.h, inst/include/Matrix/version.h", + "Date": "2025-08-27", + "Priority": "recommended", + "Title": "Sparse and Dense Matrix Classes and Methods", + "Description": "A rich hierarchy of sparse and dense matrix classes, including general, symmetric, triangular, and diagonal matrices with numeric, logical, or pattern entries. Efficient methods for operating on such matrices, often wrapping the 'BLAS', 'LAPACK', and 'SuiteSparse' libraries.", + "License": "GPL (>= 2) | file LICENCE", + "URL": "https://Matrix.R-forge.R-project.org", + "BugReports": "https://R-forge.R-project.org/tracker/?atid=294&group_id=61", + "Contact": "Matrix-authors@R-project.org", + "Authors@R": "c(person(\"Douglas\", \"Bates\", role = \"aut\", comment = c(ORCID = \"0000-0001-8316-9503\")), person(\"Martin\", \"Maechler\", role = c(\"aut\", \"cre\"), email = \"mmaechler+Matrix@gmail.com\", comment = c(ORCID = \"0000-0002-8685-9910\")), person(\"Mikael\", \"Jagan\", role = \"aut\", comment = c(ORCID = \"0000-0002-3542-2938\")), person(\"Timothy A.\", \"Davis\", role = \"ctb\", comment = c(ORCID = \"0000-0001-7614-6899\", \"SuiteSparse libraries\", \"collaborators listed in dir(system.file(\\\"doc\\\", \\\"SuiteSparse\\\", package=\\\"Matrix\\\"), pattern=\\\"License\\\", full.names=TRUE, recursive=TRUE)\")), person(\"George\", \"Karypis\", role = \"ctb\", comment = c(ORCID = \"0000-0003-2753-1437\", \"METIS library\", \"Copyright: Regents of the University of Minnesota\")), person(\"Jason\", \"Riedy\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4345-4200\", \"GNU Octave's condest() and onenormest()\", \"Copyright: Regents of the University of California\")), person(\"Jens\", \"Oehlschlägel\", role = \"ctb\", comment = \"initial nearPD()\"), person(\"R Core Team\", role = \"ctb\", comment = c(ROR = \"02zz1nj61\", \"base R's matrix implementation\")))", + "Depends": [ + "R (>= 4.4)", + "methods" + ], + "Imports": [ + "grDevices", + "graphics", + "grid", + "lattice", + "stats", + "utils" + ], + "Suggests": [ + "MASS", + "datasets", + "sfsmisc", + "tools" + ], + "Enhances": [ + "SparseM", + "graph" + ], + "LazyData": "no", + "LazyDataNote": "not possible, since we use data/*.R and our S4 classes", + "BuildResaveData": "no", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Douglas Bates [aut] (ORCID: ), Martin Maechler [aut, cre] (ORCID: ), Mikael Jagan [aut] (ORCID: ), Timothy A. Davis [ctb] (ORCID: , SuiteSparse libraries, collaborators listed in dir(system.file(\"doc\", \"SuiteSparse\", package=\"Matrix\"), pattern=\"License\", full.names=TRUE, recursive=TRUE)), George Karypis [ctb] (ORCID: , METIS library, Copyright: Regents of the University of Minnesota), Jason Riedy [ctb] (ORCID: , GNU Octave's condest() and onenormest(), Copyright: Regents of the University of California), Jens Oehlschlägel [ctb] (initial nearPD()), R Core Team [ctb] (ROR: , base R's matrix implementation)", + "Maintainer": "Martin Maechler ", + "Repository": "CRAN" + }, + "R6": { + "Package": "R6", + "Version": "2.6.1", + "Source": "Repository", + "Title": "Encapsulated Classes with Reference Semantics", + "Authors@R": "c( person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Creates classes with reference semantics, similar to R's built-in reference classes. Compared to reference classes, R6 classes are simpler and lighter-weight, and they are not built on S4 classes so they do not require the methods package. These classes allow public and private members, and they support inheritance, even when the classes are defined in different packages.", + "License": "MIT + file LICENSE", + "URL": "https://r6.r-lib.org, https://github.com/r-lib/R6", + "BugReports": "https://github.com/r-lib/R6/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Suggests": [ + "lobstr", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate, ggplot2, microbenchmark, scales", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Winston Chang [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Winston Chang ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "RColorBrewer": { + "Package": "RColorBrewer", + "Version": "1.1-3", + "Source": "Repository", + "Date": "2022-04-03", + "Title": "ColorBrewer Palettes", + "Authors@R": "c(person(given = \"Erich\", family = \"Neuwirth\", role = c(\"aut\", \"cre\"), email = \"erich.neuwirth@univie.ac.at\"))", + "Author": "Erich Neuwirth [aut, cre]", + "Maintainer": "Erich Neuwirth ", + "Depends": [ + "R (>= 2.0.0)" + ], + "Description": "Provides color schemes for maps (and other graphics) designed by Cynthia Brewer as described at http://colorbrewer2.org.", + "License": "Apache License 2.0", + "NeedsCompilation": "no", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "RSpectra": { + "Package": "RSpectra", + "Version": "0.16-2", + "Source": "Repository", + "Type": "Package", + "Title": "Solvers for Large-Scale Eigenvalue and SVD Problems", + "Date": "2024-07-18", + "Authors@R": "c( person(\"Yixuan\", \"Qiu\", , \"yixuan.qiu@cos.name\", c(\"aut\", \"cre\")), person(\"Jiali\", \"Mei\", , \"vermouthmjl@gmail.com\", \"aut\", comment = \"Function interface of matrix operation\"), person(\"Gael\", \"Guennebaud\", , \"gael.guennebaud@inria.fr\", \"ctb\", comment = \"Eigenvalue solvers from the 'Eigen' library\"), person(\"Jitse\", \"Niesen\", , \"jitse@maths.leeds.ac.uk\", \"ctb\", comment = \"Eigenvalue solvers from the 'Eigen' library\") )", + "Description": "R interface to the 'Spectra' library for large-scale eigenvalue and SVD problems. It is typically used to compute a few eigenvalues/vectors of an n by n matrix, e.g., the k largest eigenvalues, which is usually more efficient than eigen() if k << n. This package provides the 'eigs()' function that does the similar job as in 'Matlab', 'Octave', 'Python SciPy' and 'Julia'. It also provides the 'svds()' function to calculate the largest k singular values and corresponding singular vectors of a real matrix. The matrix to be computed on can be dense, sparse, or in the form of an operator defined by the user.", + "License": "MPL (>= 2)", + "URL": "https://github.com/yixuan/RSpectra", + "BugReports": "https://github.com/yixuan/RSpectra/issues", + "Depends": [ + "R (>= 3.0.2)" + ], + "Imports": [ + "Matrix (>= 1.1-0)", + "Rcpp (>= 0.11.5)" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "prettydoc" + ], + "LinkingTo": [ + "Rcpp", + "RcppEigen (>= 0.3.3.3.0)" + ], + "VignetteBuilder": "knitr, rmarkdown", + "RoxygenNote": "7.1.2", + "NeedsCompilation": "yes", + "Author": "Yixuan Qiu [aut, cre], Jiali Mei [aut] (Function interface of matrix operation), Gael Guennebaud [ctb] (Eigenvalue solvers from the 'Eigen' library), Jitse Niesen [ctb] (Eigenvalue solvers from the 'Eigen' library)", + "Maintainer": "Yixuan Qiu ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.1.1", + "Source": "Repository", + "Title": "Seamless R and C++ Integration", + "Date": "2026-01-07", + "Authors@R": "c(person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Romain\", \"Francois\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"JJ\", \"Allaire\", role = \"aut\", comment = c(ORCID = \"0000-0003-0174-9868\")), person(\"Kevin\", \"Ushey\", role = \"aut\", comment = c(ORCID = \"0000-0003-2880-7407\")), person(\"Qiang\", \"Kou\", role = \"aut\", comment = c(ORCID = \"0000-0001-6786-5453\")), person(\"Nathan\", \"Russell\", role = \"aut\"), person(\"Iñaki\", \"Ucar\", role = \"aut\", comment = c(ORCID = \"0000-0001-6403-5550\")), person(\"Doug\", \"Bates\", role = \"aut\", comment = c(ORCID = \"0000-0001-8316-9503\")), person(\"John\", \"Chambers\", role = \"aut\"))", + "Description": "The 'Rcpp' package provides R functions as well as C++ classes which offer a seamless integration of R and C++. Many R data types and objects can be mapped back and forth to C++ equivalents which facilitates both writing of new code as well as easier integration of third-party libraries. Documentation about 'Rcpp' is provided by several vignettes included in this package, via the 'Rcpp Gallery' site at , the paper by Eddelbuettel and Francois (2011, ), the book by Eddelbuettel (2013, ) and the paper by Eddelbuettel and Balamuta (2018, ); see 'citation(\"Rcpp\")' for details.", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "methods", + "utils" + ], + "Suggests": [ + "tinytest", + "inline", + "rbenchmark", + "pkgKitten (>= 0.1.2)" + ], + "URL": "https://www.rcpp.org, https://dirk.eddelbuettel.com/code/rcpp.html, https://github.com/RcppCore/Rcpp", + "License": "GPL (>= 2)", + "BugReports": "https://github.com/RcppCore/Rcpp/issues", + "MailingList": "rcpp-devel@lists.r-forge.r-project.org", + "RoxygenNote": "6.1.1", + "Encoding": "UTF-8", + "VignetteBuilder": "Rcpp", + "NeedsCompilation": "yes", + "Author": "Dirk Eddelbuettel [aut, cre] (ORCID: ), Romain Francois [aut] (ORCID: ), JJ Allaire [aut] (ORCID: ), Kevin Ushey [aut] (ORCID: ), Qiang Kou [aut] (ORCID: ), Nathan Russell [aut], Iñaki Ucar [aut] (ORCID: ), Doug Bates [aut] (ORCID: ), John Chambers [aut]", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "P3M" + }, + "RcppEigen": { + "Package": "RcppEigen", + "Version": "0.3.4.0.2", + "Source": "Repository", + "Type": "Package", + "Title": "'Rcpp' Integration for the 'Eigen' Templated Linear Algebra Library", + "Date": "2024-08-23", + "Authors@R": "c(person(\"Doug\", \"Bates\", role = \"aut\", comment = c(ORCID = \"0000-0001-8316-9503\")), person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Romain\", \"Francois\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"Yixuan\", \"Qiu\", role = \"aut\", comment = c(ORCID = \"0000-0003-0109-6692\")), person(\"Authors of\", \"Eigen\", role = \"cph\", comment = \"Authorship and copyright in included Eigen library as detailed in inst/COPYRIGHTS\"))", + "Copyright": "See the file COPYRIGHTS for various Eigen copyright details", + "Description": "R and 'Eigen' integration using 'Rcpp'. 'Eigen' is a C++ template library for linear algebra: matrices, vectors, numerical solvers and related algorithms. It supports dense and sparse matrices on integer, floating point and complex numbers, decompositions of such matrices, and solutions of linear systems. Its performance on many algorithms is comparable with some of the best implementations based on 'Lapack' and level-3 'BLAS'. The 'RcppEigen' package includes the header files from the 'Eigen' C++ template library. Thus users do not need to install 'Eigen' itself in order to use 'RcppEigen'. Since version 3.1.1, 'Eigen' is licensed under the Mozilla Public License (version 2); earlier version were licensed under the GNU LGPL version 3 or later. 'RcppEigen' (the 'Rcpp' bindings/bridge to 'Eigen') is licensed under the GNU GPL version 2 or later, as is the rest of 'Rcpp'.", + "License": "GPL (>= 2) | file LICENSE", + "LazyLoad": "yes", + "Depends": [ + "R (>= 3.6.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Imports": [ + "Rcpp (>= 0.11.0)", + "stats", + "utils" + ], + "Suggests": [ + "Matrix", + "inline", + "tinytest", + "pkgKitten", + "microbenchmark" + ], + "URL": "https://github.com/RcppCore/RcppEigen, https://dirk.eddelbuettel.com/code/rcpp.eigen.html", + "BugReports": "https://github.com/RcppCore/RcppEigen/issues", + "NeedsCompilation": "yes", + "Author": "Doug Bates [aut] (), Dirk Eddelbuettel [aut, cre] (), Romain Francois [aut] (), Yixuan Qiu [aut] (), Authors of Eigen [cph] (Authorship and copyright in included Eigen library as detailed in inst/COPYRIGHTS)", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "RcppTOML": { + "Package": "RcppTOML", + "Version": "0.2.3", + "Source": "Repository", + "Type": "Package", + "Title": "'Rcpp' Bindings to Parser for \"Tom's Obvious Markup Language\"", + "Date": "2025-03-08", + "Authors@R": "c(person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Mark\", \"Gillard\", role = \"aut\", comment = \"Author of 'toml++' header library\"))", + "Description": "The configuration format defined by 'TOML' (which expands to \"Tom's Obvious Markup Language\") specifies an excellent format (described at ) suitable for both human editing as well as the common uses of a machine-readable format. This package uses 'Rcpp' to connect to the 'toml++' parser written by Mark Gillard to R.", + "SystemRequirements": "A C++17 compiler", + "BugReports": "https://github.com/eddelbuettel/rcpptoml/issues", + "URL": "http://dirk.eddelbuettel.com/code/rcpp.toml.html", + "Imports": [ + "Rcpp (>= 1.0.8)" + ], + "Depends": [ + "R (>= 3.3.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Suggests": [ + "tinytest" + ], + "License": "GPL (>= 2)", + "NeedsCompilation": "yes", + "Author": "Dirk Eddelbuettel [aut, cre] (), Mark Gillard [aut] (Author of 'toml++' header library)", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "S7": { + "Package": "S7", + "Version": "0.2.1", + "Source": "Repository", + "Title": "An Object Oriented System Meant to Become a Successor to S3 and S4", + "Authors@R": "c( person(\"Object-Oriented Programming Working Group\", role = \"cph\"), person(\"Davis\", \"Vaughan\", role = \"aut\"), person(\"Jim\", \"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Tomasz\", \"Kalinowski\", role = \"aut\"), person(\"Will\", \"Landau\", role = \"aut\"), person(\"Michael\", \"Lawrence\", role = \"aut\"), person(\"Martin\", \"Maechler\", role = \"aut\", comment = c(ORCID = \"0000-0002-8685-9910\")), person(\"Luke\", \"Tierney\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4757-117X\")) )", + "Description": "A new object oriented programming system designed to be a successor to S3 and S4. It includes formal class, generic, and method specification, and a limited form of multiple dispatch. It has been designed and implemented collaboratively by the R Consortium Object-Oriented Programming Working Group, which includes representatives from R-Core, 'Bioconductor', 'Posit'/'tidyverse', and the wider R community.", + "License": "MIT + file LICENSE", + "URL": "https://rconsortium.github.io/S7/, https://github.com/RConsortium/S7", + "BugReports": "https://github.com/RConsortium/S7/issues", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "bench", + "callr", + "covr", + "knitr", + "methods", + "rmarkdown", + "testthat (>= 3.2.0)", + "tibble" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "sloop", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "TRUE", + "Config/testthat/start-first": "external-generic", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Object-Oriented Programming Working Group [cph], Davis Vaughan [aut], Jim Hester [aut] (ORCID: ), Tomasz Kalinowski [aut], Will Landau [aut], Michael Lawrence [aut], Martin Maechler [aut] (ORCID: ), Luke Tierney [aut], Hadley Wickham [aut, cre] (ORCID: )", + "Maintainer": "Hadley Wickham ", + "Repository": "RSPM" + }, + "SQUAREM": { + "Package": "SQUAREM", + "Version": "2021.1", + "Source": "Repository", + "Date": "2021-01-12", + "Title": "Squared Extrapolation Methods for Accelerating EM-Like Monotone Algorithms", + "Description": "Algorithms for accelerating the convergence of slow, monotone sequences from smooth, contraction mapping such as the EM algorithm. It can be used to accelerate any smooth, linearly convergent acceleration scheme. A tutorial style introduction to this package is available in a vignette on the CRAN download page or, when the package is loaded in an R session, with vignette(\"SQUAREM\"). Refer to the J Stat Software article: .", + "Depends": [ + "R (>= 3.0)" + ], + "Suggests": [ + "setRNG" + ], + "LazyLoad": "yes", + "License": "GPL (>= 2)", + "Author": "Ravi Varadhan", + "Maintainer": "Ravi Varadhan ", + "URL": "https://coah.jhu.edu/people/Faculty_personal_Pages/Varadhan.html", + "Repository": "RSPM", + "NeedsCompilation": "no", + "Encoding": "UTF-8" + }, + "V8": { + "Package": "V8", + "Version": "8.0.1", + "Source": "Repository", + "Type": "Package", + "Title": "Embedded JavaScript and WebAssembly Engine for R", + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"George\", \"Stagg\", role = \"ctb\", comment = c(ORCID = \"0009-0006-3173-9846\")), person(\"Jan Marvin\", \"Garbuszus\", role = \"ctb\"))", + "Description": "An R interface to V8 : Google's open source JavaScript and WebAssembly engine. This package can be compiled either with V8 or NodeJS when built as a shared library.", + "License": "MIT + file LICENSE", + "URL": "https://jeroen.r-universe.dev/V8", + "BugReports": "https://github.com/jeroen/v8/issues", + "SystemRequirements": "On Linux you can build against libv8-dev (Debian) or v8-devel (Fedora). We also provide static libv8 binaries for most platforms, see the README for details.", + "NeedsCompilation": "yes", + "VignetteBuilder": "knitr", + "Imports": [ + "Rcpp (>= 0.12.12)", + "jsonlite (>= 1.0)", + "curl (>= 1.0)", + "utils" + ], + "LinkingTo": [ + "Rcpp" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown" + ], + "RoxygenNote": "7.3.1", + "Language": "en-US", + "Encoding": "UTF-8", + "Biarch": "true", + "Author": "Jeroen Ooms [aut, cre] (ORCID: ), George Stagg [ctb] (ORCID: ), Jan Marvin Garbuszus [ctb]", + "Maintainer": "Jeroen Ooms ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "abind": { + "Package": "abind", + "Version": "1.4-8", + "Source": "Repository", + "Date": "2024-09-08", + "Title": "Combine Multidimensional Arrays", + "Authors@R": "c(person(\"Tony\", \"Plate\", email = \"tplate@acm.org\", role = c(\"aut\", \"cre\")), person(\"Richard\", \"Heiberger\", role = c(\"aut\")))", + "Maintainer": "Tony Plate ", + "Description": "Combine multidimensional arrays into a single array. This is a generalization of 'cbind' and 'rbind'. Works with vectors, matrices, and higher-dimensional arrays (aka tensors). Also provides functions 'adrop', 'asub', and 'afill' for manipulating, extracting and replacing data in arrays.", + "Depends": [ + "R (>= 1.5.0)" + ], + "Imports": [ + "methods", + "utils" + ], + "License": "MIT + file LICENSE", + "NeedsCompilation": "no", + "Author": "Tony Plate [aut, cre], Richard Heiberger [aut]", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "askpass": { + "Package": "askpass", + "Version": "1.2.1", + "Source": "Repository", + "Type": "Package", + "Title": "Password Entry Utilities for R, Git, and SSH", + "Authors@R": "person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\"))", + "Description": "Cross-platform utilities for prompting the user for credentials or a passphrase, for example to authenticate with a server or read a protected key. Includes native programs for MacOS and Windows, hence no 'tcltk' is required. Password entry can be invoked in two different ways: directly from R via the askpass() function, or indirectly as password-entry back-end for 'ssh-agent' or 'git-credential' via the SSH_ASKPASS and GIT_ASKPASS environment variables. Thereby the user can be prompted for credentials or a passphrase if needed when R calls out to git or ssh.", + "License": "MIT + file LICENSE", + "URL": "https://r-lib.r-universe.dev/askpass", + "BugReports": "https://github.com/r-lib/askpass/issues", + "Encoding": "UTF-8", + "Imports": [ + "sys (>= 2.1)" + ], + "RoxygenNote": "7.2.3", + "Suggests": [ + "testthat" + ], + "Language": "en-US", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] ()", + "Maintainer": "Jeroen Ooms ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "backports": { + "Package": "backports", + "Version": "1.5.0", + "Source": "Repository", + "Type": "Package", + "Title": "Reimplementations of Functions Introduced Since R-3.0.0", + "Authors@R": "c( person(\"Michel\", \"Lang\", NULL, \"michellang@gmail.com\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0001-9754-0393\")), person(\"Duncan\", \"Murdoch\", NULL, \"murdoch.duncan@gmail.com\", role = c(\"aut\")), person(\"R Core Team\", role = \"aut\"))", + "Maintainer": "Michel Lang ", + "Description": "Functions introduced or changed since R v3.0.0 are re-implemented in this package. The backports are conditionally exported in order to let R resolve the function name to either the implemented backport, or the respective base version, if available. Package developers can make use of new functions or arguments by selectively importing specific backports to support older installations.", + "URL": "https://github.com/r-lib/backports", + "BugReports": "https://github.com/r-lib/backports/issues", + "License": "GPL-2 | GPL-3", + "NeedsCompilation": "yes", + "ByteCompile": "yes", + "Depends": [ + "R (>= 3.0.0)" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "Author": "Michel Lang [cre, aut] (), Duncan Murdoch [aut], R Core Team [aut]", + "Repository": "RSPM" + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Title": "Tools for base64 encoding", + "Author": "Simon Urbanek ", + "Maintainer": "Simon Urbanek ", + "Depends": [ + "R (>= 2.9.0)" + ], + "Enhances": [ + "png" + ], + "Description": "This package provides tools for handling base64 encoding. It is more flexible than the orphaned base64 package.", + "License": "GPL-2 | GPL-3", + "URL": "http://www.rforge.net/base64enc", + "NeedsCompilation": "yes", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "base64url": { + "Package": "base64url", + "Version": "1.4", + "Source": "Repository", + "Type": "Package", + "Title": "Fast and URL-Safe Base64 Encoder and Decoder", + "Authors@R": "c( person(\"Michel\", \"Lang\", NULL, \"michellang@gmail.com\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0001-9754-0393\")), person(NULL, \"Apache Foundation\", NULL, NULL, role = c(\"ctb\", \"cph\")), person(NULL, \"Free Software Foundation\", NULL, NULL, role = c(\"ctb\", \"cph\")) )", + "Description": "In contrast to RFC3548, the 62nd character (\"+\") is replaced with \"-\", the 63rd character (\"/\") is replaced with \"_\". Furthermore, the encoder does not fill the string with trailing \"=\". The resulting encoded strings comply to the regular expression pattern \"[A-Za-z0-9_-]\" and thus are safe to use in URLs or for file names. The package also comes with a simple base32 encoder/decoder suited for case insensitive file systems.", + "URL": "https://github.com/mllg/base64url", + "BugReports": "https://github.com/mllg/base64url/issues", + "NeedsCompilation": "yes", + "License": "GPL-3", + "Encoding": "UTF-8", + "Imports": [ + "backports (>= 1.1.0)" + ], + "Suggests": [ + "base64enc", + "checkmate", + "knitr", + "microbenchmark", + "openssl", + "rmarkdown", + "testthat" + ], + "RoxygenNote": "6.0.1", + "VignetteBuilder": "knitr", + "Author": "Michel Lang [cre, aut] (), Apache Foundation [ctb, cph], Free Software Foundation [ctb, cph]", + "Maintainer": "Michel Lang ", + "Repository": "RSPM" + }, + "bigD": { + "Package": "bigD", + "Version": "0.3.1", + "Source": "Repository", + "Type": "Package", + "Title": "Flexibly Format Dates and Times to a Given Locale", + "Description": "Format dates and times flexibly and to whichever locales make sense. Parses dates, times, and date-times in various formats (including string-based ISO 8601 constructions). The formatting syntax gives the user many options for formatting the date and time output in a precise manner. Time zones in the input can be expressed in multiple ways and there are many options for formatting time zones in the output as well. Several of the provided helper functions allow for automatic generation of locale-aware formatting patterns based on date/time skeleton formats and standardized date/time formats with varying specificity.", + "Authors@R": "c( person(\"Richard\", \"Iannone\", , \"rich@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"Olivier\", \"Roy\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/bigD/, https://github.com/rstudio/bigD", + "BugReports": "https://github.com/rstudio/bigD/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "Depends": [ + "R (>= 3.6.0)" + ], + "Suggests": [ + "testthat (>= 3.0.0)", + "vctrs (>= 0.5.0)" + ], + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "NeedsCompilation": "no", + "Author": "Richard Iannone [aut, cre] (), Olivier Roy [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Richard Iannone ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "bit": { + "Package": "bit", + "Version": "4.6.0", + "Source": "Repository", + "Title": "Classes and Methods for Fast Memory-Efficient Boolean Selections", + "Authors@R": "c( person(\"Michael\", \"Chirico\", email = \"MichaelChirico4@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Jens\", \"Oehlschlägel\", role = \"aut\"), person(\"Brian\", \"Ripley\", role = \"ctb\") )", + "Depends": [ + "R (>= 3.4.0)" + ], + "Suggests": [ + "testthat (>= 3.0.0)", + "roxygen2", + "knitr", + "markdown", + "rmarkdown", + "microbenchmark", + "bit64 (>= 4.0.0)", + "ff (>= 4.0.0)" + ], + "Description": "Provided are classes for boolean and skewed boolean vectors, fast boolean methods, fast unique and non-unique integer sorting, fast set operations on sorted and unsorted sets of integers, and foundations for ff (range index, compression, chunked processing).", + "License": "GPL-2 | GPL-3", + "LazyLoad": "yes", + "ByteCompile": "yes", + "Encoding": "UTF-8", + "URL": "https://github.com/r-lib/bit", + "VignetteBuilder": "knitr, rmarkdown", + "RoxygenNote": "7.3.2", + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Author": "Michael Chirico [aut, cre], Jens Oehlschlägel [aut], Brian Ripley [ctb]", + "Maintainer": "Michael Chirico ", + "Repository": "RSPM" + }, + "bit64": { + "Package": "bit64", + "Version": "4.6.0-1", + "Source": "Repository", + "Title": "A S3 Class for Vectors of 64bit Integers", + "Authors@R": "c( person(\"Michael\", \"Chirico\", email = \"michaelchirico4@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Jens\", \"Oehlschlägel\", role = \"aut\"), person(\"Leonardo\", \"Silvestri\", role = \"ctb\"), person(\"Ofek\", \"Shilon\", role = \"ctb\") )", + "Depends": [ + "R (>= 3.4.0)", + "bit (>= 4.0.0)" + ], + "Description": "Package 'bit64' provides serializable S3 atomic 64bit (signed) integers. These are useful for handling database keys and exact counting in +-2^63. WARNING: do not use them as replacement for 32bit integers, integer64 are not supported for subscripting by R-core and they have different semantics when combined with double, e.g. integer64 + double => integer64. Class integer64 can be used in vectors, matrices, arrays and data.frames. Methods are available for coercion from and to logicals, integers, doubles, characters and factors as well as many elementwise and summary functions. Many fast algorithmic operations such as 'match' and 'order' support inter- active data exploration and manipulation and optionally leverage caching.", + "License": "GPL-2 | GPL-3", + "LazyLoad": "yes", + "ByteCompile": "yes", + "URL": "https://github.com/r-lib/bit64", + "Encoding": "UTF-8", + "Imports": [ + "graphics", + "methods", + "stats", + "utils" + ], + "Suggests": [ + "testthat (>= 3.0.3)", + "withr" + ], + "Config/testthat/edition": "3", + "Config/needs/development": "testthat", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Michael Chirico [aut, cre], Jens Oehlschlägel [aut], Leonardo Silvestri [ctb], Ofek Shilon [ctb]", + "Maintainer": "Michael Chirico ", + "Repository": "RSPM" + }, + "bitops": { + "Package": "bitops", + "Version": "1.0-9", + "Source": "Repository", + "Date": "2024-10-03", + "Authors@R": "c( person(\"Steve\", \"Dutky\", role = \"aut\", email = \"sdutky@terpalum.umd.edu\", comment = \"S original; then (after MM's port) revised and modified\"), person(\"Martin\", \"Maechler\", role = c(\"cre\", \"aut\"), email = \"maechler@stat.math.ethz.ch\", comment = c(\"Initial R port; tweaks\", ORCID = \"0000-0002-8685-9910\")))", + "Title": "Bitwise Operations", + "Description": "Functions for bitwise operations on integer vectors.", + "License": "GPL (>= 2)", + "URL": "https://github.com/mmaechler/R-bitops", + "BugReports": "https://github.com/mmaechler/R-bitops/issues", + "NeedsCompilation": "yes", + "Author": "Steve Dutky [aut] (S original; then (after MM's port) revised and modified), Martin Maechler [cre, aut] (Initial R port; tweaks, )", + "Maintainer": "Martin Maechler ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "blob": { + "Package": "blob", + "Version": "1.3.0", + "Source": "Repository", + "Title": "A Simple S3 Class for Representing Vectors of Binary Data ('BLOBS')", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = \"cre\"), person(\"RStudio\", role = c(\"cph\", \"fnd\")) )", + "Description": "R's raw vector is useful for storing a single binary object. What if you want to put a vector of them in a data frame? The 'blob' package provides the blob object, a list of raw vectors, suitable for use as a column in data frame.", + "License": "MIT + file LICENSE", + "URL": "https://blob.tidyverse.org, https://github.com/tidyverse/blob", + "BugReports": "https://github.com/tidyverse/blob/issues", + "Imports": [ + "methods", + "rlang", + "vctrs (>= 0.2.1)" + ], + "Suggests": [ + "covr", + "crayon", + "pillar (>= 1.2.1)", + "testthat (>= 3.0.0)" + ], + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "false", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut], Kirill Müller [cre], RStudio [cph, fnd]", + "Maintainer": "Kirill Müller ", + "Repository": "RSPM" + }, + "boot": { + "Package": "boot", + "Version": "1.3-32", + "Source": "Repository", + "Priority": "recommended", + "Date": "2025-08-29", + "Authors@R": "c(person(\"Angelo\", \"Canty\", role = \"aut\", email = \"cantya@mcmaster.ca\", comment = \"author of original code for S\"), person(\"Brian\", \"Ripley\", role = c(\"aut\", \"trl\"), email = \"Brian.Ripley@R-project.org\", comment = \"conversion to R, maintainer 1999--2022, author of parallel support\"), person(\"Alessandra R.\", \"Brazzale\", role = c(\"ctb\", \"cre\"), email = \"brazzale@stat.unipd.it\", comment = \"minor bug fixes\"))", + "Maintainer": "Alessandra R. Brazzale ", + "Note": "Maintainers are not available to give advice on using a package they did not author.", + "Description": "Functions and datasets for bootstrapping from the book \"Bootstrap Methods and Their Application\" by A. C. Davison and D. V. Hinkley (1997, CUP), originally written by Angelo Canty for S.", + "Title": "Bootstrap Functions", + "Depends": [ + "R (>= 3.0.0)", + "graphics", + "stats" + ], + "Suggests": [ + "MASS", + "survival" + ], + "LazyData": "yes", + "ByteCompile": "yes", + "License": "Unlimited", + "NeedsCompilation": "no", + "Author": "Angelo Canty [aut] (author of original code for S), Brian Ripley [aut, trl] (conversion to R, maintainer 1999--2022, author of parallel support), Alessandra R. Brazzale [ctb, cre] (minor bug fixes)", + "Repository": "CRAN" + }, + "broom": { + "Package": "broom", + "Version": "1.0.11", + "Source": "Repository", + "Type": "Package", + "Title": "Convert Statistical Objects into Tidy Tibbles", + "Authors@R": "c( person(\"David\", \"Robinson\", , \"admiral.david@gmail.com\", role = \"aut\"), person(\"Alex\", \"Hayes\", , \"alexpghayes@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-4985-5160\")), person(\"Simon\", \"Couch\", , \"simon.couch@posit.co\", role = c(\"aut\"), comment = c(ORCID = \"0000-0001-5676-5107\")), person(\"Emil\", \"Hvitfeldt\", , \"emil.hvitfeldt@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-0679-1945\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")), person(\"Indrajeet\", \"Patil\", , \"patilindrajeet.science@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1995-6531\")), person(\"Derek\", \"Chiu\", , \"dchiu@bccrc.ca\", role = \"ctb\"), person(\"Matthieu\", \"Gomez\", , \"mattg@princeton.edu\", role = \"ctb\"), person(\"Boris\", \"Demeshev\", , \"boris.demeshev@gmail.com\", role = \"ctb\"), person(\"Dieter\", \"Menne\", , \"dieter.menne@menne-biomed.de\", role = \"ctb\"), person(\"Benjamin\", \"Nutter\", , \"nutter@battelle.org\", role = \"ctb\"), person(\"Luke\", \"Johnston\", , \"luke.johnston@mail.utoronto.ca\", role = \"ctb\"), person(\"Ben\", \"Bolker\", , \"bolker@mcmaster.ca\", role = \"ctb\"), person(\"Francois\", \"Briatte\", , \"f.briatte@gmail.com\", role = \"ctb\"), person(\"Jeffrey\", \"Arnold\", , \"jeffrey.arnold@gmail.com\", role = \"ctb\"), person(\"Jonah\", \"Gabry\", , \"jsg2201@columbia.edu\", role = \"ctb\"), person(\"Luciano\", \"Selzer\", , \"luciano.selzer@gmail.com\", role = \"ctb\"), person(\"Gavin\", \"Simpson\", , \"ucfagls@gmail.com\", role = \"ctb\"), person(\"Jens\", \"Preussner\", , \"jens.preussner@mpi-bn.mpg.de\", role = \"ctb\"), person(\"Jay\", \"Hesselberth\", , \"jay.hesselberth@gmail.com\", role = \"ctb\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"ctb\"), person(\"Matthew\", \"Lincoln\", , \"matthew.d.lincoln@gmail.com\", role = \"ctb\"), person(\"Alessandro\", \"Gasparini\", , \"ag475@leicester.ac.uk\", role = \"ctb\"), person(\"Lukasz\", \"Komsta\", , \"lukasz.komsta@umlub.pl\", role = \"ctb\"), person(\"Frederick\", \"Novometsky\", role = \"ctb\"), person(\"Wilson\", \"Freitas\", role = \"ctb\"), person(\"Michelle\", \"Evans\", role = \"ctb\"), person(\"Jason Cory\", \"Brunson\", , \"cornelioid@gmail.com\", role = \"ctb\"), person(\"Simon\", \"Jackson\", , \"drsimonjackson@gmail.com\", role = \"ctb\"), person(\"Ben\", \"Whalley\", , \"ben.whalley@plymouth.ac.uk\", role = \"ctb\"), person(\"Karissa\", \"Whiting\", , \"karissa.whiting@gmail.com\", role = \"ctb\"), person(\"Yves\", \"Rosseel\", , \"yrosseel@gmail.com\", role = \"ctb\"), person(\"Michael\", \"Kuehn\", , \"mkuehn10@gmail.com\", role = \"ctb\"), person(\"Jorge\", \"Cimentada\", , \"cimentadaj@gmail.com\", role = \"ctb\"), person(\"Erle\", \"Holgersen\", , \"erle.holgersen@gmail.com\", role = \"ctb\"), person(\"Karl\", \"Dunkle Werner\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0523-7309\")), person(\"Ethan\", \"Christensen\", , \"christensen.ej@gmail.com\", role = \"ctb\"), person(\"Steven\", \"Pav\", , \"shabbychef@gmail.com\", role = \"ctb\"), person(\"Paul\", \"PJ\", , \"pjpaul.stephens@gmail.com\", role = \"ctb\"), person(\"Ben\", \"Schneider\", , \"benjamin.julius.schneider@gmail.com\", role = \"ctb\"), person(\"Patrick\", \"Kennedy\", , \"pkqstr@protonmail.com\", role = \"ctb\"), person(\"Lily\", \"Medina\", , \"lilymiru@gmail.com\", role = \"ctb\"), person(\"Brian\", \"Fannin\", , \"captain@pirategrunt.com\", role = \"ctb\"), person(\"Jason\", \"Muhlenkamp\", , \"jason.muhlenkamp@gmail.com\", role = \"ctb\"), person(\"Matt\", \"Lehman\", role = \"ctb\"), person(\"Bill\", \"Denney\", , \"wdenney@humanpredictions.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-5759-428X\")), person(\"Nic\", \"Crane\", role = \"ctb\"), person(\"Andrew\", \"Bates\", role = \"ctb\"), person(\"Vincent\", \"Arel-Bundock\", , \"vincent.arel-bundock@umontreal.ca\", role = \"ctb\", comment = c(ORCID = \"0000-0003-2042-7063\")), person(\"Hideaki\", \"Hayashi\", role = \"ctb\"), person(\"Luis\", \"Tobalina\", role = \"ctb\"), person(\"Annie\", \"Wang\", , \"anniewang.uc@gmail.com\", role = \"ctb\"), person(\"Wei Yang\", \"Tham\", , \"weiyang.tham@gmail.com\", role = \"ctb\"), person(\"Clara\", \"Wang\", , \"clara.wang.94@gmail.com\", role = \"ctb\"), person(\"Abby\", \"Smith\", , \"als1@u.northwestern.edu\", role = \"ctb\", comment = c(ORCID = \"0000-0002-3207-0375\")), person(\"Jasper\", \"Cooper\", , \"jaspercooper@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8639-3188\")), person(\"E Auden\", \"Krauska\", , \"krauskae@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-1466-5850\")), person(\"Alex\", \"Wang\", , \"x249wang@uwaterloo.ca\", role = \"ctb\"), person(\"Malcolm\", \"Barrett\", , \"malcolmbarrett@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0299-5825\")), person(\"Charles\", \"Gray\", , \"charlestigray@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9978-011X\")), person(\"Jared\", \"Wilber\", role = \"ctb\"), person(\"Vilmantas\", \"Gegzna\", , \"GegznaV@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9500-5167\")), person(\"Eduard\", \"Szoecs\", , \"eduardszoecs@gmail.com\", role = \"ctb\"), person(\"Frederik\", \"Aust\", , \"frederik.aust@uni-koeln.de\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4900-788X\")), person(\"Angus\", \"Moore\", , \"angusmoore9@gmail.com\", role = \"ctb\"), person(\"Nick\", \"Williams\", , \"ntwilliams.personal@gmail.com\", role = \"ctb\"), person(\"Marius\", \"Barth\", , \"marius.barth.uni.koeln@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-3421-6665\")), person(\"Bruna\", \"Wundervald\", , \"brunadaviesw@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0001-8163-220X\")), person(\"Joyce\", \"Cahoon\", , \"joyceyu48@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0001-7217-4702\")), person(\"Grant\", \"McDermott\", , \"grantmcd@uoregon.edu\", role = \"ctb\", comment = c(ORCID = \"0000-0001-7883-8573\")), person(\"Kevin\", \"Zarca\", , \"kevin.zarca@gmail.com\", role = \"ctb\"), person(\"Shiro\", \"Kuriwaki\", , \"shirokuriwaki@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-5687-2647\")), person(\"Lukas\", \"Wallrich\", , \"lukas.wallrich@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0003-2121-5177\")), person(\"James\", \"Martherus\", , \"james@martherus.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8285-3300\")), person(\"Chuliang\", \"Xiao\", , \"cxiao@umich.edu\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8466-9398\")), person(\"Joseph\", \"Larmarange\", , \"joseph@larmarange.net\", role = \"ctb\"), person(\"Max\", \"Kuhn\", , \"max@posit.co\", role = \"ctb\"), person(\"Michal\", \"Bojanowski\", , \"michal2992@gmail.com\", role = \"ctb\"), person(\"Hakon\", \"Malmedal\", , \"hmalmedal@gmail.com\", role = \"ctb\"), person(\"Clara\", \"Wang\", role = \"ctb\"), person(\"Sergio\", \"Oller\", , \"sergioller@gmail.com\", role = \"ctb\"), person(\"Luke\", \"Sonnet\", , \"luke.sonnet@gmail.com\", role = \"ctb\"), person(\"Jim\", \"Hester\", , \"jim.hester@posit.co\", role = \"ctb\"), person(\"Ben\", \"Schneider\", , \"benjamin.julius.schneider@gmail.com\", role = \"ctb\"), person(\"Bernie\", \"Gray\", , \"bfgray3@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0001-9190-6032\")), person(\"Mara\", \"Averick\", , \"mara@posit.co\", role = \"ctb\"), person(\"Aaron\", \"Jacobs\", , \"atheriel@gmail.com\", role = \"ctb\"), person(\"Andreas\", \"Bender\", , \"bender.at.R@gmail.com\", role = \"ctb\"), person(\"Sven\", \"Templer\", , \"sven.templer@gmail.com\", role = \"ctb\"), person(\"Paul-Christian\", \"Buerkner\", , \"paul.buerkner@gmail.com\", role = \"ctb\"), person(\"Matthew\", \"Kay\", , \"mjskay@umich.edu\", role = \"ctb\"), person(\"Erwan\", \"Le Pennec\", , \"lepennec@gmail.com\", role = \"ctb\"), person(\"Johan\", \"Junkka\", , \"johan.junkka@umu.se\", role = \"ctb\"), person(\"Hao\", \"Zhu\", , \"haozhu233@gmail.com\", role = \"ctb\"), person(\"Benjamin\", \"Soltoff\", , \"soltoffbc@uchicago.edu\", role = \"ctb\"), person(\"Zoe\", \"Wilkinson Saldana\", , \"zoewsaldana@gmail.com\", role = \"ctb\"), person(\"Tyler\", \"Littlefield\", , \"tylurp1@gmail.com\", role = \"ctb\"), person(\"Charles T.\", \"Gray\", , \"charlestigray@gmail.com\", role = \"ctb\"), person(\"Shabbh E.\", \"Banks\", role = \"ctb\"), person(\"Serina\", \"Robinson\", , \"robi0916@umn.edu\", role = \"ctb\"), person(\"Roger\", \"Bivand\", , \"Roger.Bivand@nhh.no\", role = \"ctb\"), person(\"Riinu\", \"Ots\", , \"riinuots@gmail.com\", role = \"ctb\"), person(\"Nicholas\", \"Williams\", , \"ntwilliams.personal@gmail.com\", role = \"ctb\"), person(\"Nina\", \"Jakobsen\", role = \"ctb\"), person(\"Michael\", \"Weylandt\", , \"michael.weylandt@gmail.com\", role = \"ctb\"), person(\"Lisa\", \"Lendway\", , \"llendway@macalester.edu\", role = \"ctb\"), person(\"Karl\", \"Hailperin\", , \"khailper@gmail.com\", role = \"ctb\"), person(\"Josue\", \"Rodriguez\", , \"jerrodriguez@ucdavis.edu\", role = \"ctb\"), person(\"Jenny\", \"Bryan\", , \"jenny@posit.co\", role = \"ctb\"), person(\"Chris\", \"Jarvis\", , \"Christopher1.jarvis@gmail.com\", role = \"ctb\"), person(\"Greg\", \"Macfarlane\", , \"gregmacfarlane@gmail.com\", role = \"ctb\"), person(\"Brian\", \"Mannakee\", , \"bmannakee@gmail.com\", role = \"ctb\"), person(\"Drew\", \"Tyre\", , \"atyre2@unl.edu\", role = \"ctb\"), person(\"Shreyas\", \"Singh\", , \"shreyas.singh.298@gmail.com\", role = \"ctb\"), person(\"Laurens\", \"Geffert\", , \"laurensgeffert@gmail.com\", role = \"ctb\"), person(\"Hong\", \"Ooi\", , \"hongooi@microsoft.com\", role = \"ctb\"), person(\"Henrik\", \"Bengtsson\", , \"henrikb@braju.com\", role = \"ctb\"), person(\"Eduard\", \"Szocs\", , \"eduardszoecs@gmail.com\", role = \"ctb\"), person(\"David\", \"Hugh-Jones\", , \"davidhughjones@gmail.com\", role = \"ctb\"), person(\"Matthieu\", \"Stigler\", , \"Matthieu.Stigler@gmail.com\", role = \"ctb\"), person(\"Hugo\", \"Tavares\", , \"hm533@cam.ac.uk\", role = \"ctb\", comment = c(ORCID = \"0000-0001-9373-2726\")), person(\"R. Willem\", \"Vervoort\", , \"Willemvervoort@gmail.com\", role = \"ctb\"), person(\"Brenton M.\", \"Wiernik\", , \"brenton@wiernik.org\", role = \"ctb\"), person(\"Josh\", \"Yamamoto\", , \"joshuayamamoto5@gmail.com\", role = \"ctb\"), person(\"Jasme\", \"Lee\", role = \"ctb\"), person(\"Taren\", \"Sanders\", , \"taren.sanders@acu.edu.au\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4504-6008\")), person(\"Ilaria\", \"Prosdocimi\", , \"prosdocimi.ilaria@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0001-8565-094X\")), person(\"Daniel D.\", \"Sjoberg\", , \"danield.sjoberg@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0862-2018\")), person(\"Alex\", \"Reinhart\", , \"areinhar@stat.cmu.edu\", role = \"ctb\", comment = c(ORCID = \"0000-0002-6658-514X\")) )", + "Description": "Summarizes key information about statistical objects in tidy tibbles. This makes it easy to report results, create plots and consistently work with large numbers of models at once. Broom provides three verbs that each provide different types of information about a model. tidy() summarizes information about model components such as coefficients of a regression. glance() reports information about an entire model, such as goodness of fit measures like AIC and BIC. augment() adds information about individual observations to a dataset, such as fitted values or influence measures.", + "License": "MIT + file LICENSE", + "URL": "https://broom.tidymodels.org/, https://github.com/tidymodels/broom", + "BugReports": "https://github.com/tidymodels/broom/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "backports", + "cli", + "dplyr (>= 1.0.0)", + "generics (>= 0.0.2)", + "glue", + "lifecycle", + "purrr", + "rlang (>= 1.1.0)", + "stringr", + "tibble (>= 3.0.0)", + "tidyr (>= 1.0.0)" + ], + "Suggests": [ + "AER", + "AUC", + "bbmle", + "betareg (>= 3.2-1)", + "biglm", + "binGroup", + "boot", + "btergm (>= 1.10.6)", + "car (>= 3.1-2)", + "carData", + "caret", + "cluster", + "cmprsk", + "coda", + "covr", + "drc", + "e1071", + "emmeans", + "epiR (>= 2.0.85)", + "ergm (>= 3.10.4)", + "fixest (>= 0.9.0)", + "gam (>= 1.15)", + "gee", + "geepack", + "ggplot2", + "glmnet", + "glmnetUtils", + "gmm", + "Hmisc", + "interp", + "irlba", + "joineRML", + "Kendall", + "knitr", + "ks", + "Lahman", + "lavaan (>= 0.6.18)", + "leaps", + "lfe", + "lm.beta", + "lme4", + "lmodel2", + "lmtest (>= 0.9.38)", + "lsmeans", + "maps", + "margins", + "MASS", + "mclust", + "mediation", + "metafor", + "mfx", + "mgcv", + "mlogit", + "modeldata", + "modeltests (>= 0.1.6)", + "muhaz", + "multcomp", + "network", + "nnet", + "ordinal", + "plm", + "poLCA", + "psych", + "quantreg", + "rmarkdown", + "robust", + "robustbase", + "rsample", + "sandwich", + "spatialreg", + "spdep (>= 1.1)", + "speedglm", + "spelling", + "stats4", + "survey", + "survival (>= 3.6-4)", + "systemfit", + "testthat (>= 3.0.0)", + "tseries", + "vars", + "zoo" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-25", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "Collate": "'aaa-documentation-helper.R' 'null-and-default.R' 'aer.R' 'auc.R' 'base.R' 'bbmle.R' 'betareg.R' 'biglm.R' 'bingroup.R' 'boot.R' 'broom-package.R' 'broom.R' 'btergm.R' 'car.R' 'caret.R' 'cluster.R' 'cmprsk.R' 'data-frame.R' 'deprecated-0-7-0.R' 'drc.R' 'emmeans.R' 'epiR.R' 'ergm.R' 'fixest.R' 'gam.R' 'geepack.R' 'glmnet-cv-glmnet.R' 'glmnet-glmnet.R' 'gmm.R' 'hmisc.R' 'import-standalone-obj-type.R' 'import-standalone-types-check.R' 'joinerml.R' 'kendall.R' 'ks.R' 'lavaan.R' 'leaps.R' 'lfe.R' 'list-irlba.R' 'list-optim.R' 'list-svd.R' 'list-xyz.R' 'list.R' 'lm-beta.R' 'lmodel2.R' 'lmtest.R' 'maps.R' 'margins.R' 'mass-fitdistr.R' 'mass-negbin.R' 'mass-polr.R' 'mass-ridgelm.R' 'stats-lm.R' 'mass-rlm.R' 'mclust.R' 'mediation.R' 'metafor.R' 'mfx.R' 'mgcv.R' 'mlogit.R' 'muhaz.R' 'multcomp.R' 'nnet.R' 'nobs.R' 'ordinal-clm.R' 'ordinal-clmm.R' 'plm.R' 'polca.R' 'psych.R' 'stats-nls.R' 'quantreg-nlrq.R' 'quantreg-rq.R' 'quantreg-rqs.R' 'robust-glmrob.R' 'robust-lmrob.R' 'robustbase-glmrob.R' 'robustbase-lmrob.R' 'sp.R' 'spdep.R' 'speedglm-speedglm.R' 'speedglm-speedlm.R' 'stats-anova.R' 'stats-arima.R' 'stats-decompose.R' 'stats-factanal.R' 'stats-glm.R' 'stats-htest.R' 'stats-kmeans.R' 'stats-loess.R' 'stats-mlm.R' 'stats-prcomp.R' 'stats-smooth.spline.R' 'stats-summary-lm.R' 'stats-time-series.R' 'survey.R' 'survival-aareg.R' 'survival-cch.R' 'survival-coxph.R' 'survival-pyears.R' 'survival-survdiff.R' 'survival-survexp.R' 'survival-survfit.R' 'survival-survreg.R' 'systemfit.R' 'tseries.R' 'utilities.R' 'vars.R' 'zoo.R' 'zzz.R'", + "NeedsCompilation": "no", + "Author": "David Robinson [aut], Alex Hayes [aut] (ORCID: ), Simon Couch [aut] (ORCID: ), Emil Hvitfeldt [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: ), Indrajeet Patil [ctb] (ORCID: ), Derek Chiu [ctb], Matthieu Gomez [ctb], Boris Demeshev [ctb], Dieter Menne [ctb], Benjamin Nutter [ctb], Luke Johnston [ctb], Ben Bolker [ctb], Francois Briatte [ctb], Jeffrey Arnold [ctb], Jonah Gabry [ctb], Luciano Selzer [ctb], Gavin Simpson [ctb], Jens Preussner [ctb], Jay Hesselberth [ctb], Hadley Wickham [ctb], Matthew Lincoln [ctb], Alessandro Gasparini [ctb], Lukasz Komsta [ctb], Frederick Novometsky [ctb], Wilson Freitas [ctb], Michelle Evans [ctb], Jason Cory Brunson [ctb], Simon Jackson [ctb], Ben Whalley [ctb], Karissa Whiting [ctb], Yves Rosseel [ctb], Michael Kuehn [ctb], Jorge Cimentada [ctb], Erle Holgersen [ctb], Karl Dunkle Werner [ctb] (ORCID: ), Ethan Christensen [ctb], Steven Pav [ctb], Paul PJ [ctb], Ben Schneider [ctb], Patrick Kennedy [ctb], Lily Medina [ctb], Brian Fannin [ctb], Jason Muhlenkamp [ctb], Matt Lehman [ctb], Bill Denney [ctb] (ORCID: ), Nic Crane [ctb], Andrew Bates [ctb], Vincent Arel-Bundock [ctb] (ORCID: ), Hideaki Hayashi [ctb], Luis Tobalina [ctb], Annie Wang [ctb], Wei Yang Tham [ctb], Clara Wang [ctb], Abby Smith [ctb] (ORCID: ), Jasper Cooper [ctb] (ORCID: ), E Auden Krauska [ctb] (ORCID: ), Alex Wang [ctb], Malcolm Barrett [ctb] (ORCID: ), Charles Gray [ctb] (ORCID: ), Jared Wilber [ctb], Vilmantas Gegzna [ctb] (ORCID: ), Eduard Szoecs [ctb], Frederik Aust [ctb] (ORCID: ), Angus Moore [ctb], Nick Williams [ctb], Marius Barth [ctb] (ORCID: ), Bruna Wundervald [ctb] (ORCID: ), Joyce Cahoon [ctb] (ORCID: ), Grant McDermott [ctb] (ORCID: ), Kevin Zarca [ctb], Shiro Kuriwaki [ctb] (ORCID: ), Lukas Wallrich [ctb] (ORCID: ), James Martherus [ctb] (ORCID: ), Chuliang Xiao [ctb] (ORCID: ), Joseph Larmarange [ctb], Max Kuhn [ctb], Michal Bojanowski [ctb], Hakon Malmedal [ctb], Clara Wang [ctb], Sergio Oller [ctb], Luke Sonnet [ctb], Jim Hester [ctb], Ben Schneider [ctb], Bernie Gray [ctb] (ORCID: ), Mara Averick [ctb], Aaron Jacobs [ctb], Andreas Bender [ctb], Sven Templer [ctb], Paul-Christian Buerkner [ctb], Matthew Kay [ctb], Erwan Le Pennec [ctb], Johan Junkka [ctb], Hao Zhu [ctb], Benjamin Soltoff [ctb], Zoe Wilkinson Saldana [ctb], Tyler Littlefield [ctb], Charles T. Gray [ctb], Shabbh E. Banks [ctb], Serina Robinson [ctb], Roger Bivand [ctb], Riinu Ots [ctb], Nicholas Williams [ctb], Nina Jakobsen [ctb], Michael Weylandt [ctb], Lisa Lendway [ctb], Karl Hailperin [ctb], Josue Rodriguez [ctb], Jenny Bryan [ctb], Chris Jarvis [ctb], Greg Macfarlane [ctb], Brian Mannakee [ctb], Drew Tyre [ctb], Shreyas Singh [ctb], Laurens Geffert [ctb], Hong Ooi [ctb], Henrik Bengtsson [ctb], Eduard Szocs [ctb], David Hugh-Jones [ctb], Matthieu Stigler [ctb], Hugo Tavares [ctb] (ORCID: ), R. Willem Vervoort [ctb], Brenton M. Wiernik [ctb], Josh Yamamoto [ctb], Jasme Lee [ctb], Taren Sanders [ctb] (ORCID: ), Ilaria Prosdocimi [ctb] (ORCID: ), Daniel D. Sjoberg [ctb] (ORCID: ), Alex Reinhart [ctb] (ORCID: )", + "Maintainer": "Emil Hvitfeldt ", + "Repository": "RSPM" + }, + "bslib": { + "Package": "bslib", + "Version": "0.9.0", + "Source": "Repository", + "Title": "Custom 'Bootstrap' 'Sass' Themes for 'shiny' and 'rmarkdown'", + "Authors@R": "c( person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Garrick\", \"Aden-Buie\", , \"garrick@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-7111-0077\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(, \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"), person(\"Javi\", \"Aguilar\", role = c(\"ctb\", \"cph\"), comment = \"Bootstrap colorpicker library\"), person(\"Thomas\", \"Park\", role = c(\"ctb\", \"cph\"), comment = \"Bootswatch library\"), person(, \"PayPal\", role = c(\"ctb\", \"cph\"), comment = \"Bootstrap accessibility plugin\") )", + "Description": "Simplifies custom 'CSS' styling of both 'shiny' and 'rmarkdown' via 'Bootstrap' 'Sass'. Supports 'Bootstrap' 3, 4 and 5 as well as their various 'Bootswatch' themes. An interactive widget is also provided for previewing themes in real time.", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/bslib/, https://github.com/rstudio/bslib", + "BugReports": "https://github.com/rstudio/bslib/issues", + "Depends": [ + "R (>= 2.10)" + ], + "Imports": [ + "base64enc", + "cachem", + "fastmap (>= 1.1.1)", + "grDevices", + "htmltools (>= 0.5.8)", + "jquerylib (>= 0.1.3)", + "jsonlite", + "lifecycle", + "memoise (>= 2.0.1)", + "mime", + "rlang", + "sass (>= 0.4.9)" + ], + "Suggests": [ + "bsicons", + "curl", + "fontawesome", + "future", + "ggplot2", + "knitr", + "magrittr", + "rappdirs", + "rmarkdown (>= 2.7)", + "shiny (> 1.8.1)", + "testthat", + "thematic", + "tools", + "utils", + "withr", + "yaml" + ], + "Config/Needs/deploy": "BH, chiflights22, colourpicker, commonmark, cpp11, cpsievert/chiflights22, cpsievert/histoslider, dplyr, DT, ggplot2, ggridges, gt, hexbin, histoslider, htmlwidgets, lattice, leaflet, lubridate, markdown, modelr, plotly, reactable, reshape2, rprojroot, rsconnect, rstudio/shiny, scales, styler, tibble", + "Config/Needs/routine": "chromote, desc, renv", + "Config/Needs/website": "brio, crosstalk, dplyr, DT, ggplot2, glue, htmlwidgets, leaflet, lorem, palmerpenguins, plotly, purrr, rprojroot, rstudio/htmltools, scales, stringr, tidyr, webshot2", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "zzzz-bs-sass, fonts, zzz-precompile, theme-*, rmd-*", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "Collate": "'accordion.R' 'breakpoints.R' 'bs-current-theme.R' 'bs-dependencies.R' 'bs-global.R' 'bs-remove.R' 'bs-theme-layers.R' 'bs-theme-preset-bootswatch.R' 'bs-theme-preset-brand.R' 'bs-theme-preset-builtin.R' 'bs-theme-preset.R' 'utils.R' 'bs-theme-preview.R' 'bs-theme-update.R' 'bs-theme.R' 'bslib-package.R' 'buttons.R' 'card.R' 'deprecated.R' 'files.R' 'fill.R' 'imports.R' 'input-dark-mode.R' 'input-switch.R' 'layout.R' 'nav-items.R' 'nav-update.R' 'navbar_options.R' 'navs-legacy.R' 'navs.R' 'onLoad.R' 'page.R' 'popover.R' 'precompiled.R' 'print.R' 'shiny-devmode.R' 'sidebar.R' 'staticimports.R' 'tooltip.R' 'utils-deps.R' 'utils-shiny.R' 'utils-tags.R' 'value-box.R' 'version-default.R' 'versions.R'", + "NeedsCompilation": "no", + "Author": "Carson Sievert [aut, cre] (), Joe Cheng [aut], Garrick Aden-Buie [aut] (), Posit Software, PBC [cph, fnd], Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Javi Aguilar [ctb, cph] (Bootstrap colorpicker library), Thomas Park [ctb, cph] (Bootswatch library), PayPal [ctb, cph] (Bootstrap accessibility plugin)", + "Maintainer": "Carson Sievert ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "cachem": { + "Package": "cachem", + "Version": "1.1.0", + "Source": "Repository", + "Title": "Cache R Objects with Automatic Pruning", + "Description": "Key-value stores with automatic pruning. Caches can limit either their total size or the age of the oldest object (or both), automatically pruning objects to maintain the constraints.", + "Authors@R": "c( person(\"Winston\", \"Chang\", , \"winston@posit.co\", c(\"aut\", \"cre\")), person(family = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")))", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "ByteCompile": "true", + "URL": "https://cachem.r-lib.org/, https://github.com/r-lib/cachem", + "Imports": [ + "rlang", + "fastmap (>= 1.2.0)" + ], + "Suggests": [ + "testthat" + ], + "RoxygenNote": "7.2.3", + "Config/Needs/routine": "lobstr", + "Config/Needs/website": "pkgdown", + "NeedsCompilation": "yes", + "Author": "Winston Chang [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Winston Chang ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "callr": { + "Package": "callr", + "Version": "3.7.6", + "Source": "Repository", + "Title": "Call R from R", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0001-7098-9676\")), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"Ascent Digital Services\", role = c(\"cph\", \"fnd\")) )", + "Description": "It is sometimes useful to perform a computation in a separate R process, without affecting the current R process at all. This packages does exactly that.", + "License": "MIT + file LICENSE", + "URL": "https://callr.r-lib.org, https://github.com/r-lib/callr", + "BugReports": "https://github.com/r-lib/callr/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "processx (>= 3.6.1)", + "R6", + "utils" + ], + "Suggests": [ + "asciicast (>= 2.3.1)", + "cli (>= 1.1.0)", + "mockery", + "ps", + "rprojroot", + "spelling", + "testthat (>= 3.2.0)", + "withr (>= 2.3.0)" + ], + "Config/Needs/website": "r-lib/asciicast, glue, htmlwidgets, igraph, tibble, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.1.9000", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre, cph] (), Winston Chang [aut], Posit Software, PBC [cph, fnd], Ascent Digital Services [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "cellranger": { + "Package": "cellranger", + "Version": "1.1.0", + "Source": "Repository", + "Title": "Translate Spreadsheet Cell Ranges to Rows and Columns", + "Authors@R": "c( person(\"Jennifer\", \"Bryan\", , \"jenny@stat.ubc.ca\", c(\"cre\", \"aut\")), person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", \"ctb\") )", + "Description": "Helper functions to work with spreadsheets and the \"A1:D10\" style of cell range specification.", + "Depends": [ + "R (>= 3.0.0)" + ], + "License": "MIT + file LICENSE", + "LazyData": "true", + "URL": "https://github.com/rsheets/cellranger", + "BugReports": "https://github.com/rsheets/cellranger/issues", + "Suggests": [ + "covr", + "testthat (>= 1.0.0)", + "knitr", + "rmarkdown" + ], + "RoxygenNote": "5.0.1.9000", + "VignetteBuilder": "knitr", + "Imports": [ + "rematch", + "tibble" + ], + "NeedsCompilation": "no", + "Author": "Jennifer Bryan [cre, aut], Hadley Wickham [ctb]", + "Maintainer": "Jennifer Bryan ", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "class": { + "Package": "class", + "Version": "7.3-23", + "Source": "Repository", + "Priority": "recommended", + "Date": "2025-01-01", + "Depends": [ + "R (>= 3.0.0)", + "stats", + "utils" + ], + "Imports": [ + "MASS" + ], + "Authors@R": "c(person(\"Brian\", \"Ripley\", role = c(\"aut\", \"cre\", \"cph\"), email = \"Brian.Ripley@R-project.org\"), person(\"William\", \"Venables\", role = \"cph\"))", + "Description": "Various functions for classification, including k-nearest neighbour, Learning Vector Quantization and Self-Organizing Maps.", + "Title": "Functions for Classification", + "ByteCompile": "yes", + "License": "GPL-2 | GPL-3", + "URL": "http://www.stats.ox.ac.uk/pub/MASS4/", + "NeedsCompilation": "yes", + "Author": "Brian Ripley [aut, cre, cph], William Venables [cph]", + "Maintainer": "Brian Ripley ", + "Repository": "CRAN" + }, + "classInt": { + "Package": "classInt", + "Version": "0.4-11", + "Source": "Repository", + "Date": "2025-01-06", + "Title": "Choose Univariate Class Intervals", + "Authors@R": "c( person(\"Roger\", \"Bivand\", role=c(\"aut\", \"cre\"), email=\"Roger.Bivand@nhh.no\", comment=c(ORCID=\"0000-0003-2392-6140\")), person(\"Bill\", \"Denney\", role=\"ctb\", comment=c(ORCID=\"0000-0002-5759-428X\")), person(\"Richard\", \"Dunlap\", role=\"ctb\"), person(\"Diego\", \"Hernangómez\", role=\"ctb\", comment=c(ORCID=\"0000-0001-8457-4658\")), person(\"Hisaji\", \"Ono\", role=\"ctb\"), person(\"Josiah\", \"Parry\", role = \"ctb\", comment = c(ORCID = \"0000-0001-9910-865X\")), person(\"Matthieu\", \"Stigler\", role=\"ctb\", comment =c(ORCID=\"0000-0002-6802-4290\")))", + "Depends": [ + "R (>= 2.2)" + ], + "Imports": [ + "grDevices", + "stats", + "graphics", + "e1071", + "class", + "KernSmooth" + ], + "Suggests": [ + "spData (>= 0.2.6.2)", + "units", + "knitr", + "rmarkdown", + "tinytest" + ], + "NeedsCompilation": "yes", + "Description": "Selected commonly used methods for choosing univariate class intervals for mapping or other graphics purposes.", + "License": "GPL (>= 2)", + "URL": "https://r-spatial.github.io/classInt/, https://github.com/r-spatial/classInt/", + "BugReports": "https://github.com/r-spatial/classInt/issues/", + "RoxygenNote": "6.1.1", + "Encoding": "UTF-8", + "VignetteBuilder": "knitr", + "Author": "Roger Bivand [aut, cre] (), Bill Denney [ctb] (), Richard Dunlap [ctb], Diego Hernangómez [ctb] (), Hisaji Ono [ctb], Josiah Parry [ctb] (), Matthieu Stigler [ctb] ()", + "Maintainer": "Roger Bivand ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "cli": { + "Package": "cli", + "Version": "3.6.5", + "Source": "Repository", + "Title": "Helpers for Developing Command Line Interfaces", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"gabor@posit.co\", role = c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", role = \"ctb\"), person(\"Kirill\", \"Müller\", role = \"ctb\"), person(\"Salim\", \"Brüggemann\", , \"salim-b@pm.me\", role = \"ctb\", comment = c(ORCID = \"0000-0002-5329-5987\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A suite of tools to build attractive command line interfaces ('CLIs'), from semantic elements: headings, lists, alerts, paragraphs, etc. Supports custom themes via a 'CSS'-like language. It also contains a number of lower level 'CLI' elements: rules, boxes, trees, and 'Unicode' symbols with 'ASCII' alternatives. It support ANSI colors and text styles as well.", + "License": "MIT + file LICENSE", + "URL": "https://cli.r-lib.org, https://github.com/r-lib/cli", + "BugReports": "https://github.com/r-lib/cli/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "callr", + "covr", + "crayon", + "digest", + "glue (>= 1.6.0)", + "grDevices", + "htmltools", + "htmlwidgets", + "knitr", + "methods", + "processx", + "ps (>= 1.3.4.9000)", + "rlang (>= 1.0.2.9003)", + "rmarkdown", + "rprojroot", + "rstudioapi", + "testthat (>= 3.2.0)", + "tibble", + "whoami", + "withr" + ], + "Config/Needs/website": "r-lib/asciicast, bench, brio, cpp11, decor, desc, fansi, prettyunits, sessioninfo, tidyverse/tidytemplate, usethis, vctrs", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Gábor Csárdi [aut, cre], Hadley Wickham [ctb], Kirill Müller [ctb], Salim Brüggemann [ctb] (), Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "clipr": { + "Package": "clipr", + "Version": "0.8.0", + "Source": "Repository", + "Type": "Package", + "Title": "Read and Write from the System Clipboard", + "Authors@R": "c( person(\"Matthew\", \"Lincoln\", , \"matthew.d.lincoln@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4387-3384\")), person(\"Louis\", \"Maddox\", role = \"ctb\"), person(\"Steve\", \"Simpson\", role = \"ctb\"), person(\"Jennifer\", \"Bryan\", role = \"ctb\") )", + "Description": "Simple utility functions to read from and write to the Windows, OS X, and X11 clipboards.", + "License": "GPL-3", + "URL": "https://github.com/mdlincoln/clipr, http://matthewlincoln.net/clipr/", + "BugReports": "https://github.com/mdlincoln/clipr/issues", + "Imports": [ + "utils" + ], + "Suggests": [ + "covr", + "knitr", + "rmarkdown", + "rstudioapi (>= 0.5)", + "testthat (>= 2.0.0)" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.1.2", + "SystemRequirements": "xclip (https://github.com/astrand/xclip) or xsel (http://www.vergenet.net/~conrad/software/xsel/) for accessing the X11 clipboard, or wl-clipboard (https://github.com/bugaevc/wl-clipboard) for systems using Wayland.", + "NeedsCompilation": "no", + "Author": "Matthew Lincoln [aut, cre] (), Louis Maddox [ctb], Steve Simpson [ctb], Jennifer Bryan [ctb]", + "Maintainer": "Matthew Lincoln ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "clock": { + "Package": "clock", + "Version": "0.7.4", + "Source": "Repository", + "Title": "Date-Time Types and Tools", + "Authors@R": "c( person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides a comprehensive library for date-time manipulations using a new family of orthogonal date-time classes (durations, time points, zoned-times, and calendars) that partition responsibilities so that the complexities of time zones are only considered when they are really needed. Capabilities include: date-time parsing, formatting, arithmetic, extraction and updating of components, and rounding.", + "License": "MIT + file LICENSE", + "URL": "https://clock.r-lib.org, https://github.com/r-lib/clock", + "BugReports": "https://github.com/r-lib/clock/issues", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "cli (>= 3.6.4)", + "lifecycle (>= 1.0.4)", + "rlang (>= 1.1.5)", + "tzdb (>= 0.5.0)", + "vctrs (>= 0.6.5)" + ], + "Suggests": [ + "covr", + "knitr", + "magrittr", + "pillar", + "rmarkdown", + "slider (>= 0.3.2)", + "testthat (>= 3.0.0)", + "withr" + ], + "LinkingTo": [ + "cpp11 (>= 0.5.2)", + "tzdb (>= 0.5.0)" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "lubridate, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Davis Vaughan [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Davis Vaughan ", + "Repository": "RSPM" + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-20", + "Source": "Repository", + "Priority": "recommended", + "Author": "Luke Tierney ", + "Description": "Code analysis tools for R.", + "Title": "Code Analysis Tools for R", + "Depends": [ + "R (>= 2.1)" + ], + "Maintainer": "Luke Tierney ", + "URL": "https://gitlab.com/luke-tierney/codetools", + "License": "GPL", + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "colorspace": { + "Package": "colorspace", + "Version": "2.1-2", + "Source": "Repository", + "Date": "2025-09-22", + "Title": "A Toolbox for Manipulating and Assessing Colors and Palettes", + "Authors@R": "c(person(given = \"Ross\", family = \"Ihaka\", role = \"aut\", email = \"ihaka@stat.auckland.ac.nz\"), person(given = \"Paul\", family = \"Murrell\", role = \"aut\", email = \"paul@stat.auckland.ac.nz\", comment = c(ORCID = \"0000-0002-3224-8858\")), person(given = \"Kurt\", family = \"Hornik\", role = \"aut\", email = \"Kurt.Hornik@R-project.org\", comment = c(ORCID = \"0000-0003-4198-9911\")), person(given = c(\"Jason\", \"C.\"), family = \"Fisher\", role = \"aut\", email = \"jfisher@usgs.gov\", comment = c(ORCID = \"0000-0001-9032-8912\")), person(given = \"Reto\", family = \"Stauffer\", role = \"aut\", email = \"Reto.Stauffer@uibk.ac.at\", comment = c(ORCID = \"0000-0002-3798-5507\")), person(given = c(\"Claus\", \"O.\"), family = \"Wilke\", role = \"aut\", email = \"wilke@austin.utexas.edu\", comment = c(ORCID = \"0000-0002-7470-9261\")), person(given = c(\"Claire\", \"D.\"), family = \"McWhite\", role = \"aut\", email = \"claire.mcwhite@utmail.utexas.edu\", comment = c(ORCID = \"0000-0001-7346-3047\")), person(given = \"Achim\", family = \"Zeileis\", role = c(\"aut\", \"cre\"), email = \"Achim.Zeileis@R-project.org\", comment = c(ORCID = \"0000-0003-0918-3766\")))", + "Description": "Carries out mapping between assorted color spaces including RGB, HSV, HLS, CIEXYZ, CIELUV, HCL (polar CIELUV), CIELAB, and polar CIELAB. Qualitative, sequential, and diverging color palettes based on HCL colors are provided along with corresponding ggplot2 color scales. Color palette choice is aided by an interactive app (with either a Tcl/Tk or a shiny graphical user interface) and shiny apps with an HCL color picker and a color vision deficiency emulator. Plotting functions for displaying and assessing palettes include color swatches, visualizations of the HCL space, and trajectories in HCL and/or RGB spectrum. Color manipulation functions include: desaturation, lightening/darkening, mixing, and simulation of color vision deficiencies (deutanomaly, protanomaly, tritanomaly). Details can be found on the project web page at and in the accompanying scientific paper: Zeileis et al. (2020, Journal of Statistical Software, ).", + "Depends": [ + "R (>= 3.0.0)", + "methods" + ], + "Imports": [ + "graphics", + "grDevices", + "stats" + ], + "Suggests": [ + "datasets", + "utils", + "KernSmooth", + "MASS", + "kernlab", + "mvtnorm", + "vcd", + "tcltk", + "shiny", + "shinyjs", + "ggplot2", + "dplyr", + "scales", + "grid", + "png", + "jpeg", + "knitr", + "rmarkdown", + "RColorBrewer", + "rcartocolor", + "scico", + "viridis", + "wesanderson" + ], + "VignetteBuilder": "knitr", + "License": "BSD_3_clause + file LICENSE", + "URL": "https://colorspace.R-Forge.R-project.org/, https://hclwizard.org/", + "BugReports": "https://colorspace.R-Forge.R-project.org/contact.html", + "LazyData": "yes", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Ross Ihaka [aut], Paul Murrell [aut] (ORCID: ), Kurt Hornik [aut] (ORCID: ), Jason C. Fisher [aut] (ORCID: ), Reto Stauffer [aut] (ORCID: ), Claus O. Wilke [aut] (ORCID: ), Claire D. McWhite [aut] (ORCID: ), Achim Zeileis [aut, cre] (ORCID: )", + "Maintainer": "Achim Zeileis ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "commonmark": { + "Package": "commonmark", + "Version": "2.0.0", + "Source": "Repository", + "Type": "Package", + "Title": "High Performance CommonMark and Github Markdown Rendering in R", + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", ,\"jeroenooms@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"John MacFarlane\", role = \"cph\", comment = \"Author of cmark\"))", + "Description": "The CommonMark specification defines a rationalized version of markdown syntax. This package uses the 'cmark' reference implementation for converting markdown text into various formats including html, latex and groff man. In addition it exposes the markdown parse tree in xml format. Also includes opt-in support for GFM extensions including tables, autolinks, and strikethrough text.", + "License": "BSD_2_clause + file LICENSE", + "URL": "https://docs.ropensci.org/commonmark/ https://ropensci.r-universe.dev/commonmark", + "BugReports": "https://github.com/r-lib/commonmark/issues", + "Suggests": [ + "curl", + "testthat", + "xml2" + ], + "RoxygenNote": "7.3.2", + "Language": "en-US", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (ORCID: ), John MacFarlane [cph] (Author of cmark)", + "Maintainer": "Jeroen Ooms ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "conflicted": { + "Package": "conflicted", + "Version": "1.2.0", + "Source": "Repository", + "Title": "An Alternative Conflict Resolution Strategy", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = c(\"aut\", \"cre\")), person(\"RStudio\", role = c(\"cph\", \"fnd\")) )", + "Description": "R's default conflict management system gives the most recently loaded package precedence. This can make it hard to detect conflicts, particularly when they arise because a package update creates ambiguity that did not previously exist. 'conflicted' takes a different approach, making every conflict an error and forcing you to choose which function to use.", + "License": "MIT + file LICENSE", + "URL": "https://conflicted.r-lib.org/, https://github.com/r-lib/conflicted", + "BugReports": "https://github.com/r-lib/conflicted/issues", + "Depends": [ + "R (>= 3.2)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "memoise", + "rlang (>= 1.0.0)" + ], + "Suggests": [ + "callr", + "covr", + "dplyr", + "Matrix", + "methods", + "pkgload", + "testthat (>= 3.0.0)", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], RStudio [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "RSPM" + }, + "cowplot": { + "Package": "cowplot", + "Version": "1.2.0", + "Source": "Repository", + "Title": "Streamlined Plot Theme and Plot Annotations for 'ggplot2'", + "Authors@R": "person( given = \"Claus O.\", family = \"Wilke\", role = c(\"aut\", \"cre\"), email = \"wilke@austin.utexas.edu\", comment = c(ORCID = \"0000-0002-7470-9261\") )", + "Description": "Provides various features that help with creating publication-quality figures with 'ggplot2', such as a set of themes, functions to align plots and arrange them into complex compound figures, and functions that make it easy to annotate plots and or mix plots with images. The package was originally written for internal use in the Wilke lab, hence the name (Claus O. Wilke's plot package). It has also been used extensively in the book Fundamentals of Data Visualization.", + "URL": "https://wilkelab.org/cowplot/", + "BugReports": "https://github.com/wilkelab/cowplot/issues", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "ggplot2 (>= 3.5.2)", + "grid", + "gtable", + "grDevices", + "methods", + "rlang", + "scales" + ], + "License": "GPL-2", + "Suggests": [ + "Cairo", + "covr", + "dplyr", + "forcats", + "gridGraphics (>= 0.4-0)", + "knitr", + "lattice", + "magick", + "maps", + "PASWR", + "patchwork", + "rmarkdown", + "ragg", + "testthat (>= 1.0.0)", + "tidyr", + "vdiffr (>= 0.3.0)", + "VennDiagram" + ], + "VignetteBuilder": "knitr", + "Collate": "'add_sub.R' 'align_plots.R' 'as_grob.R' 'as_gtable.R' 'axis_canvas.R' 'cowplot.R' 'draw.R' 'get_plot_component.R' 'get_axes.R' 'get_titles.R' 'get_legend.R' 'get_panel.R' 'gtable.R' 'key_glyph.R' 'plot_grid.R' 'save.R' 'set_null_device.R' 'setup.R' 'stamp.R' 'themes.R' 'utils_ggplot2.R'", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Claus O. Wilke [aut, cre] (ORCID: )", + "Maintainer": "Claus O. Wilke ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.5.3", + "Source": "Repository", + "Title": "A C++11 Interface for R's C Interface", + "Authors@R": "c( person(\"Davis\", \"Vaughan\", email = \"davis@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4777-038X\")), person(\"Jim\",\"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Romain\", \"François\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"Benjamin\", \"Kietzman\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides a header only, C++11 interface to R's C interface. Compared to other approaches 'cpp11' strives to be safe against long jumps from the C API as well as C++ exceptions, conform to normal R function semantics and supports interaction with 'ALTREP' vectors.", + "License": "MIT + file LICENSE", + "URL": "https://cpp11.r-lib.org, https://github.com/r-lib/cpp11", + "BugReports": "https://github.com/r-lib/cpp11/issues", + "Depends": [ + "R (>= 4.0.0)" + ], + "Suggests": [ + "bench", + "brio", + "callr", + "cli", + "covr", + "decor", + "desc", + "ggplot2", + "glue", + "knitr", + "lobstr", + "mockery", + "progress", + "rmarkdown", + "scales", + "Rcpp", + "testthat (>= 3.2.0)", + "tibble", + "utils", + "vctrs", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/Needs/cpp11/cpp_register": "brio, cli, decor, desc, glue, tibble, vctrs", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Davis Vaughan [aut, cre] (ORCID: ), Jim Hester [aut] (ORCID: ), Romain François [aut] (ORCID: ), Benjamin Kietzman [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Davis Vaughan ", + "Repository": "CRAN" + }, + "crayon": { + "Package": "crayon", + "Version": "1.5.3", + "Source": "Repository", + "Title": "Colored Terminal Output", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Brodie\", \"Gaslam\", , \"brodie.gaslam@yahoo.com\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "The crayon package is now superseded. Please use the 'cli' package for new projects. Colored terminal output on terminals that support 'ANSI' color and highlight codes. It also works in 'Emacs' 'ESS'. 'ANSI' color support is automatically detected. Colors and highlighting can be combined and nested. New styles can also be created easily. This package was inspired by the 'chalk' 'JavaScript' project.", + "License": "MIT + file LICENSE", + "URL": "https://r-lib.github.io/crayon/, https://github.com/r-lib/crayon", + "BugReports": "https://github.com/r-lib/crayon/issues", + "Imports": [ + "grDevices", + "methods", + "utils" + ], + "Suggests": [ + "mockery", + "rstudioapi", + "testthat", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "Collate": "'aaa-rstudio-detect.R' 'aaaa-rematch2.R' 'aab-num-ansi-colors.R' 'aac-num-ansi-colors.R' 'ansi-256.R' 'ansi-palette.R' 'combine.R' 'string.R' 'utils.R' 'crayon-package.R' 'disposable.R' 'enc-utils.R' 'has_ansi.R' 'has_color.R' 'link.R' 'styles.R' 'machinery.R' 'parts.R' 'print.R' 'style-var.R' 'show.R' 'string_operations.R'", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre], Brodie Gaslam [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "curl": { + "Package": "curl", + "Version": "7.0.0", + "Source": "Repository", + "Type": "Package", + "Title": "A Modern and Flexible Web Client for R", + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Hadley\", \"Wickham\", role = \"ctb\"), person(\"Posit Software, PBC\", role = \"cph\"))", + "Description": "Bindings to 'libcurl' for performing fully configurable HTTP/FTP requests where responses can be processed in memory, on disk, or streaming via the callback or connection interfaces. Some knowledge of 'libcurl' is recommended; for a more-user-friendly web client see the 'httr2' package which builds on this package with http specific tools and logic.", + "License": "MIT + file LICENSE", + "SystemRequirements": "libcurl (>= 7.73): libcurl-devel (rpm) or libcurl4-openssl-dev (deb)", + "URL": "https://jeroen.r-universe.dev/curl", + "BugReports": "https://github.com/jeroen/curl/issues", + "Suggests": [ + "spelling", + "testthat (>= 1.0.0)", + "knitr", + "jsonlite", + "later", + "rmarkdown", + "httpuv (>= 1.4.4)", + "webutils" + ], + "VignetteBuilder": "knitr", + "Depends": [ + "R (>= 3.0.0)" + ], + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "Language": "en-US", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (ORCID: ), Hadley Wickham [ctb], Posit Software, PBC [cph]", + "Maintainer": "Jeroen Ooms ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "data.table": { + "Package": "data.table", + "Version": "1.18.0", + "Source": "Repository", + "Title": "Extension of `data.frame`", + "Depends": [ + "R (>= 3.4.0)" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "bit64 (>= 4.0.0)", + "bit (>= 4.0.4)", + "R.utils (>= 2.13.0)", + "xts", + "zoo (>= 1.8-1)", + "yaml", + "knitr", + "markdown" + ], + "Description": "Fast aggregation of large data (e.g. 100GB in RAM), fast ordered joins, fast add/modify/delete of columns by group using no copies at all, list columns, friendly and fast character-separated-value read/write. Offers a natural and flexible syntax, for faster development.", + "License": "MPL-2.0 | file LICENSE", + "URL": "https://r-datatable.com, https://Rdatatable.gitlab.io/data.table, https://github.com/Rdatatable/data.table", + "BugReports": "https://github.com/Rdatatable/data.table/issues", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "ByteCompile": "TRUE", + "Authors@R": "c( person(\"Tyson\",\"Barrett\", role=c(\"aut\",\"cre\"), email=\"t.barrett88@gmail.com\", comment = c(ORCID=\"0000-0002-2137-1391\")), person(\"Matt\",\"Dowle\", role=\"aut\", email=\"mattjdowle@gmail.com\"), person(\"Arun\",\"Srinivasan\", role=\"aut\", email=\"asrini@pm.me\"), person(\"Jan\",\"Gorecki\", role=\"aut\", email=\"j.gorecki@wit.edu.pl\"), person(\"Michael\",\"Chirico\", role=\"aut\", email=\"michaelchirico4@gmail.com\", comment = c(ORCID=\"0000-0003-0787-087X\")), person(\"Toby\",\"Hocking\", role=\"aut\", email=\"toby.hocking@r-project.org\", comment = c(ORCID=\"0000-0002-3146-0865\")), person(\"Benjamin\",\"Schwendinger\",role=\"aut\", comment = c(ORCID=\"0000-0003-3315-8114\")), person(\"Ivan\", \"Krylov\", role=\"aut\", email=\"ikrylov@disroot.org\", comment = c(ORCID=\"0000-0002-0172-3812\")), person(\"Pasha\",\"Stetsenko\", role=\"ctb\"), person(\"Tom\",\"Short\", role=\"ctb\"), person(\"Steve\",\"Lianoglou\", role=\"ctb\"), person(\"Eduard\",\"Antonyan\", role=\"ctb\"), person(\"Markus\",\"Bonsch\", role=\"ctb\"), person(\"Hugh\",\"Parsonage\", role=\"ctb\"), person(\"Scott\",\"Ritchie\", role=\"ctb\"), person(\"Kun\",\"Ren\", role=\"ctb\"), person(\"Xianying\",\"Tan\", role=\"ctb\"), person(\"Rick\",\"Saporta\", role=\"ctb\"), person(\"Otto\",\"Seiskari\", role=\"ctb\"), person(\"Xianghui\",\"Dong\", role=\"ctb\"), person(\"Michel\",\"Lang\", role=\"ctb\"), person(\"Watal\",\"Iwasaki\", role=\"ctb\"), person(\"Seth\",\"Wenchel\", role=\"ctb\"), person(\"Karl\",\"Broman\", role=\"ctb\"), person(\"Tobias\",\"Schmidt\", role=\"ctb\"), person(\"David\",\"Arenburg\", role=\"ctb\"), person(\"Ethan\",\"Smith\", role=\"ctb\"), person(\"Francois\",\"Cocquemas\", role=\"ctb\"), person(\"Matthieu\",\"Gomez\", role=\"ctb\"), person(\"Philippe\",\"Chataignon\", role=\"ctb\"), person(\"Nello\",\"Blaser\", role=\"ctb\"), person(\"Dmitry\",\"Selivanov\", role=\"ctb\"), person(\"Andrey\",\"Riabushenko\", role=\"ctb\"), person(\"Cheng\",\"Lee\", role=\"ctb\"), person(\"Declan\",\"Groves\", role=\"ctb\"), person(\"Daniel\",\"Possenriede\", role=\"ctb\"), person(\"Felipe\",\"Parages\", role=\"ctb\"), person(\"Denes\",\"Toth\", role=\"ctb\"), person(\"Mus\",\"Yaramaz-David\", role=\"ctb\"), person(\"Ayappan\",\"Perumal\", role=\"ctb\"), person(\"James\",\"Sams\", role=\"ctb\"), person(\"Martin\",\"Morgan\", role=\"ctb\"), person(\"Michael\",\"Quinn\", role=\"ctb\"), person(given=\"@javrucebo\", role=\"ctb\", comment=\"GitHub user\"), person(\"Marc\",\"Halperin\", role=\"ctb\"), person(\"Roy\",\"Storey\", role=\"ctb\"), person(\"Manish\",\"Saraswat\", role=\"ctb\"), person(\"Morgan\",\"Jacob\", role=\"ctb\"), person(\"Michael\",\"Schubmehl\", role=\"ctb\"), person(\"Davis\",\"Vaughan\", role=\"ctb\"), person(\"Leonardo\",\"Silvestri\", role=\"ctb\"), person(\"Jim\",\"Hester\", role=\"ctb\"), person(\"Anthony\",\"Damico\", role=\"ctb\"), person(\"Sebastian\",\"Freundt\", role=\"ctb\"), person(\"David\",\"Simons\", role=\"ctb\"), person(\"Elliott\",\"Sales de Andrade\", role=\"ctb\"), person(\"Cole\",\"Miller\", role=\"ctb\"), person(\"Jens Peder\",\"Meldgaard\", role=\"ctb\"), person(\"Vaclav\",\"Tlapak\", role=\"ctb\"), person(\"Kevin\",\"Ushey\", role=\"ctb\"), person(\"Dirk\",\"Eddelbuettel\", role=\"ctb\"), person(\"Tony\",\"Fischetti\", role=\"ctb\"), person(\"Ofek\",\"Shilon\", role=\"ctb\"), person(\"Vadim\",\"Khotilovich\", role=\"ctb\"), person(\"Hadley\",\"Wickham\", role=\"ctb\"), person(\"Bennet\",\"Becker\", role=\"ctb\"), person(\"Kyle\",\"Haynes\", role=\"ctb\"), person(\"Boniface Christian\",\"Kamgang\", role=\"ctb\"), person(\"Olivier\",\"Delmarcell\", role=\"ctb\"), person(\"Josh\",\"O'Brien\", role=\"ctb\"), person(\"Dereck\",\"de Mezquita\", role=\"ctb\"), person(\"Michael\",\"Czekanski\", role=\"ctb\"), person(\"Dmitry\", \"Shemetov\", role=\"ctb\"), person(\"Nitish\", \"Jha\", role=\"ctb\"), person(\"Joshua\", \"Wu\", role=\"ctb\"), person(\"Iago\", \"Giné-Vázquez\", role=\"ctb\"), person(\"Anirban\", \"Chetia\", role=\"ctb\"), person(\"Doris\", \"Amoakohene\", role=\"ctb\"), person(\"Angel\", \"Feliz\", role=\"ctb\"), person(\"Michael\",\"Young\", role=\"ctb\"), person(\"Mark\", \"Seeto\", role=\"ctb\"), person(\"Philippe\", \"Grosjean\", role=\"ctb\"), person(\"Vincent\", \"Runge\", role=\"ctb\"), person(\"Christian\", \"Wia\", role=\"ctb\"), person(\"Elise\", \"Maigné\", role=\"ctb\"), person(\"Vincent\", \"Rocher\", role=\"ctb\"), person(\"Vijay\", \"Lulla\", role=\"ctb\"), person(\"Aljaž\", \"Sluga\", role=\"ctb\"), person(\"Bill\", \"Evans\", role=\"ctb\"), person(\"Reino\", \"Bruner\", role=\"ctb\"), person(given=\"@badasahog\", role=\"ctb\", comment=\"GitHub user\"), person(\"Vinit\", \"Thakur\", role=\"ctb\"), person(\"Mukul\", \"Kumar\", role=\"ctb\"), person(\"Ildikó\", \"Czeller\", role=\"ctb\") )", + "NeedsCompilation": "yes", + "Author": "Tyson Barrett [aut, cre] (ORCID: ), Matt Dowle [aut], Arun Srinivasan [aut], Jan Gorecki [aut], Michael Chirico [aut] (ORCID: ), Toby Hocking [aut] (ORCID: ), Benjamin Schwendinger [aut] (ORCID: ), Ivan Krylov [aut] (ORCID: ), Pasha Stetsenko [ctb], Tom Short [ctb], Steve Lianoglou [ctb], Eduard Antonyan [ctb], Markus Bonsch [ctb], Hugh Parsonage [ctb], Scott Ritchie [ctb], Kun Ren [ctb], Xianying Tan [ctb], Rick Saporta [ctb], Otto Seiskari [ctb], Xianghui Dong [ctb], Michel Lang [ctb], Watal Iwasaki [ctb], Seth Wenchel [ctb], Karl Broman [ctb], Tobias Schmidt [ctb], David Arenburg [ctb], Ethan Smith [ctb], Francois Cocquemas [ctb], Matthieu Gomez [ctb], Philippe Chataignon [ctb], Nello Blaser [ctb], Dmitry Selivanov [ctb], Andrey Riabushenko [ctb], Cheng Lee [ctb], Declan Groves [ctb], Daniel Possenriede [ctb], Felipe Parages [ctb], Denes Toth [ctb], Mus Yaramaz-David [ctb], Ayappan Perumal [ctb], James Sams [ctb], Martin Morgan [ctb], Michael Quinn [ctb], @javrucebo [ctb] (GitHub user), Marc Halperin [ctb], Roy Storey [ctb], Manish Saraswat [ctb], Morgan Jacob [ctb], Michael Schubmehl [ctb], Davis Vaughan [ctb], Leonardo Silvestri [ctb], Jim Hester [ctb], Anthony Damico [ctb], Sebastian Freundt [ctb], David Simons [ctb], Elliott Sales de Andrade [ctb], Cole Miller [ctb], Jens Peder Meldgaard [ctb], Vaclav Tlapak [ctb], Kevin Ushey [ctb], Dirk Eddelbuettel [ctb], Tony Fischetti [ctb], Ofek Shilon [ctb], Vadim Khotilovich [ctb], Hadley Wickham [ctb], Bennet Becker [ctb], Kyle Haynes [ctb], Boniface Christian Kamgang [ctb], Olivier Delmarcell [ctb], Josh O'Brien [ctb], Dereck de Mezquita [ctb], Michael Czekanski [ctb], Dmitry Shemetov [ctb], Nitish Jha [ctb], Joshua Wu [ctb], Iago Giné-Vázquez [ctb], Anirban Chetia [ctb], Doris Amoakohene [ctb], Angel Feliz [ctb], Michael Young [ctb], Mark Seeto [ctb], Philippe Grosjean [ctb], Vincent Runge [ctb], Christian Wia [ctb], Elise Maigné [ctb], Vincent Rocher [ctb], Vijay Lulla [ctb], Aljaž Sluga [ctb], Bill Evans [ctb], Reino Bruner [ctb], @badasahog [ctb] (GitHub user), Vinit Thakur [ctb], Mukul Kumar [ctb], Ildikó Czeller [ctb]", + "Maintainer": "Tyson Barrett ", + "Repository": "RSPM" + }, + "dbplyr": { + "Package": "dbplyr", + "Version": "2.5.1", + "Source": "Repository", + "Type": "Package", + "Title": "A 'dplyr' Back End for Databases", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Maximilian\", \"Girlich\", role = \"aut\"), person(\"Edgar\", \"Ruiz\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A 'dplyr' back end for databases that allows you to work with remote database tables as if they are in-memory data frames. Basic features works with any database that has a 'DBI' back end; more advanced features require 'SQL' translation to be provided by the package author.", + "License": "MIT + file LICENSE", + "URL": "https://dbplyr.tidyverse.org/, https://github.com/tidyverse/dbplyr", + "BugReports": "https://github.com/tidyverse/dbplyr/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "blob (>= 1.2.0)", + "cli (>= 3.6.1)", + "DBI (>= 1.1.3)", + "dplyr (>= 1.1.2)", + "glue (>= 1.6.2)", + "lifecycle (>= 1.0.3)", + "magrittr", + "methods", + "pillar (>= 1.9.0)", + "purrr (>= 1.0.1)", + "R6 (>= 2.2.2)", + "rlang (>= 1.1.1)", + "tibble (>= 3.2.1)", + "tidyr (>= 1.3.0)", + "tidyselect (>= 1.2.1)", + "utils", + "vctrs (>= 0.6.3)", + "withr (>= 2.5.0)" + ], + "Suggests": [ + "bit64", + "covr", + "knitr", + "Lahman", + "nycflights13", + "odbc (>= 1.4.2)", + "RMariaDB (>= 1.2.2)", + "rmarkdown", + "RPostgres (>= 1.4.5)", + "RPostgreSQL", + "RSQLite (>= 2.3.8)", + "testthat (>= 3.1.10)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "TRUE", + "Encoding": "UTF-8", + "Language": "en-gb", + "RoxygenNote": "7.3.3", + "Collate": "'db-sql.R' 'utils-check.R' 'import-standalone-types-check.R' 'import-standalone-obj-type.R' 'utils.R' 'sql.R' 'escape.R' 'translate-sql-cut.R' 'translate-sql-quantile.R' 'translate-sql-string.R' 'translate-sql-paste.R' 'translate-sql-helpers.R' 'translate-sql-window.R' 'translate-sql-conditional.R' 'backend-.R' 'backend-access.R' 'backend-hana.R' 'backend-hive.R' 'backend-impala.R' 'verb-copy-to.R' 'backend-mssql.R' 'backend-mysql.R' 'backend-odbc.R' 'backend-oracle.R' 'backend-postgres.R' 'backend-postgres-old.R' 'backend-redshift.R' 'backend-snowflake.R' 'backend-spark-sql.R' 'backend-sqlite.R' 'backend-teradata.R' 'build-sql.R' 'data-cache.R' 'data-lahman.R' 'data-nycflights13.R' 'db-escape.R' 'db-io.R' 'db.R' 'dbplyr.R' 'explain.R' 'ident.R' 'import-standalone-s3-register.R' 'join-by-compat.R' 'join-cols-compat.R' 'lazy-join-query.R' 'lazy-ops.R' 'lazy-query.R' 'lazy-select-query.R' 'lazy-set-op-query.R' 'memdb.R' 'optimise-utils.R' 'pillar.R' 'progress.R' 'sql-build.R' 'query-join.R' 'query-select.R' 'query-semi-join.R' 'query-set-op.R' 'query.R' 'reexport.R' 'remote.R' 'rows.R' 'schema.R' 'simulate.R' 'sql-clause.R' 'sql-expr.R' 'src-sql.R' 'src_dbi.R' 'table-name.R' 'tbl-lazy.R' 'tbl-sql.R' 'test-frame.R' 'testthat.R' 'tidyeval-across.R' 'tidyeval.R' 'translate-sql.R' 'utils-format.R' 'verb-arrange.R' 'verb-compute.R' 'verb-count.R' 'verb-distinct.R' 'verb-do-query.R' 'verb-do.R' 'verb-expand.R' 'verb-fill.R' 'verb-filter.R' 'verb-group_by.R' 'verb-head.R' 'verb-joins.R' 'verb-mutate.R' 'verb-pivot-longer.R' 'verb-pivot-wider.R' 'verb-pull.R' 'verb-select.R' 'verb-set-ops.R' 'verb-slice.R' 'verb-summarise.R' 'verb-uncount.R' 'verb-window.R' 'zzz.R'", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Maximilian Girlich [aut], Edgar Ruiz [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "RSPM" + }, + "deldir": { + "Package": "deldir", + "Version": "2.0-4", + "Source": "Repository", + "Date": "2024-02-27", + "Title": "Delaunay Triangulation and Dirichlet (Voronoi) Tessellation", + "Author": "Rolf Turner", + "Maintainer": "Rolf Turner ", + "Depends": [ + "R (>= 3.5.0)" + ], + "Suggests": [ + "polyclip" + ], + "Imports": [ + "graphics", + "grDevices" + ], + "Description": "Calculates the Delaunay triangulation and the Dirichlet or Voronoi tessellation (with respect to the entire plane) of a planar point set. Plots triangulations and tessellations in various ways. Clips tessellations to sub-windows. Calculates perimeters of tessellations. Summarises information about the tiles of the tessellation.\tCalculates the centroidal Voronoi (Dirichlet) tessellation using Lloyd's algorithm.", + "LazyData": "true", + "ByteCompile": "true", + "License": "GPL (>= 2)", + "NeedsCompilation": "yes", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "diagram": { + "Package": "diagram", + "Version": "1.6.5", + "Source": "Repository", + "Title": "Functions for Visualising Simple Graphs (Networks), Plotting Flow Diagrams", + "Author": "Karline Soetaert ", + "Maintainer": "Karline Soetaert ", + "Depends": [ + "R (>= 2.01)", + "shape" + ], + "Imports": [ + "stats", + "graphics" + ], + "Description": "Visualises simple graphs (networks) based on a transition matrix, utilities to plot flow diagrams, visualising webs, electrical networks, etc. Support for the book \"A practical guide to ecological modelling - using R as a simulation platform\" by Karline Soetaert and Peter M.J. Herman (2009), Springer. and the book \"Solving Differential Equations in R\" by Karline Soetaert, Jeff Cash and Francesca Mazzia (2012), Springer. Includes demo(flowchart), demo(plotmat), demo(plotweb).", + "License": "GPL (>= 2)", + "LazyData": "yes", + "NeedsCompilation": "no", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "dials": { + "Package": "dials", + "Version": "1.4.2", + "Source": "Repository", + "Title": "Tools for Creating Tuning Parameter Values", + "Authors@R": "c( person(\"Max\", \"Kuhn\", , \"max@posit.co\", role = \"aut\"), person(\"Hannah\", \"Frick\", , \"hannah@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Many models contain tuning parameters (i.e. parameters that cannot be directly estimated from the data). These tools can be used to define objects for creating, simulating, or validating values for such parameters.", + "License": "MIT + file LICENSE", + "URL": "https://dials.tidymodels.org, https://github.com/tidymodels/dials", + "BugReports": "https://github.com/tidymodels/dials/issues", + "Depends": [ + "R (>= 4.1)", + "scales (>= 1.3.0)" + ], + "Imports": [ + "cli", + "DiceDesign", + "dplyr (>= 0.8.5)", + "glue", + "hardhat (>= 1.1.0)", + "lifecycle", + "pillar", + "purrr", + "rlang (>= 1.1.0)", + "sfd", + "tibble", + "utils", + "vctrs (>= 0.3.8)", + "withr" + ], + "Suggests": [ + "covr", + "ggplot2", + "kernlab", + "knitr", + "rmarkdown", + "rpart", + "testthat (>= 3.1.9)", + "xml2" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-23", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Max Kuhn [aut], Hannah Frick [aut, cre], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hannah Frick ", + "Repository": "RSPM" + }, + "digest": { + "Package": "digest", + "Version": "0.6.39", + "Source": "Repository", + "Authors@R": "c(person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Antoine\", \"Lucas\", role=\"ctb\", comment = c(ORCID = \"0000-0002-8059-9767\")), person(\"Jarek\", \"Tuszynski\", role=\"ctb\"), person(\"Henrik\", \"Bengtsson\", role=\"ctb\", comment = c(ORCID = \"0000-0002-7579-5165\")), person(\"Simon\", \"Urbanek\", role=\"ctb\", comment = c(ORCID = \"0000-0003-2297-1732\")), person(\"Mario\", \"Frasca\", role=\"ctb\"), person(\"Bryan\", \"Lewis\", role=\"ctb\"), person(\"Murray\", \"Stokely\", role=\"ctb\"), person(\"Hannes\", \"Muehleisen\", role=\"ctb\", comment = c(ORCID = \"0000-0001-8552-0029\")), person(\"Duncan\", \"Murdoch\", role=\"ctb\"), person(\"Jim\", \"Hester\", role=\"ctb\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Wush\", \"Wu\", role=\"ctb\", comment = c(ORCID = \"0000-0001-5180-0567\")), person(\"Qiang\", \"Kou\", role=\"ctb\", comment = c(ORCID = \"0000-0001-6786-5453\")), person(\"Thierry\", \"Onkelinx\", role=\"ctb\", comment = c(ORCID = \"0000-0001-8804-4216\")), person(\"Michel\", \"Lang\", role=\"ctb\", comment = c(ORCID = \"0000-0001-9754-0393\")), person(\"Viliam\", \"Simko\", role=\"ctb\"), person(\"Kurt\", \"Hornik\", role=\"ctb\", comment = c(ORCID = \"0000-0003-4198-9911\")), person(\"Radford\", \"Neal\", role=\"ctb\", comment = c(ORCID = \"0000-0002-2473-3407\")), person(\"Kendon\", \"Bell\", role=\"ctb\", comment = c(ORCID = \"0000-0002-9093-8312\")), person(\"Matthew\", \"de Queljoe\", role=\"ctb\"), person(\"Dmitry\", \"Selivanov\", role=\"ctb\", comment = c(ORCID = \"0000-0003-0492-6647\")), person(\"Ion\", \"Suruceanu\", role=\"ctb\", comment = c(ORCID = \"0009-0005-6446-4909\")), person(\"Bill\", \"Denney\", role=\"ctb\", comment = c(ORCID = \"0000-0002-5759-428X\")), person(\"Dirk\", \"Schumacher\", role=\"ctb\"), person(\"András\", \"Svraka\", role=\"ctb\", comment = c(ORCID = \"0009-0008-8480-1329\")), person(\"Sergey\", \"Fedorov\", role=\"ctb\", comment = c(ORCID = \"0000-0002-5970-7233\")), person(\"Will\", \"Landau\", role=\"ctb\", comment = c(ORCID = \"0000-0003-1878-3253\")), person(\"Floris\", \"Vanderhaeghe\", role=\"ctb\", comment = c(ORCID = \"0000-0002-6378-6229\")), person(\"Kevin\", \"Tappe\", role=\"ctb\"), person(\"Harris\", \"McGehee\", role=\"ctb\"), person(\"Tim\", \"Mastny\", role=\"ctb\"), person(\"Aaron\", \"Peikert\", role=\"ctb\", comment = c(ORCID = \"0000-0001-7813-818X\")), person(\"Mark\", \"van der Loo\", role=\"ctb\", comment = c(ORCID = \"0000-0002-9807-4686\")), person(\"Chris\", \"Muir\", role=\"ctb\", comment = c(ORCID = \"0000-0003-2555-3878\")), person(\"Moritz\", \"Beller\", role=\"ctb\", comment = c(ORCID = \"0000-0003-4852-0526\")), person(\"Sebastian\", \"Campbell\", role=\"ctb\", comment = c(ORCID = \"0009-0000-5948-4503\")), person(\"Winston\", \"Chang\", role=\"ctb\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Dean\", \"Attali\", role=\"ctb\", comment = c(ORCID = \"0000-0002-5645-3493\")), person(\"Michael\", \"Chirico\", role=\"ctb\", comment = c(ORCID = \"0000-0003-0787-087X\")), person(\"Kevin\", \"Ushey\", role=\"ctb\", comment = c(ORCID = \"0000-0003-2880-7407\")), person(\"Carl\", \"Pearson\", role=\"ctb\", comment = c(ORCID = \"0000-0003-0701-7860\")))", + "Date": "2025-11-19", + "Title": "Create Compact Hash Digests of R Objects", + "Description": "Implementation of a function 'digest()' for the creation of hash digests of arbitrary R objects (using the 'md5', 'sha-1', 'sha-256', 'crc32', 'xxhash', 'murmurhash', 'spookyhash', 'blake3', 'crc32c', 'xxh3_64', and 'xxh3_128' algorithms) permitting easy comparison of R language objects, as well as functions such as 'hmac()' to create hash-based message authentication code. Please note that this package is not meant to be deployed for cryptographic purposes for which more comprehensive (and widely tested) libraries such as 'OpenSSL' should be used.", + "URL": "https://github.com/eddelbuettel/digest, https://eddelbuettel.github.io/digest/, https://dirk.eddelbuettel.com/code/digest.html", + "BugReports": "https://github.com/eddelbuettel/digest/issues", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "utils" + ], + "License": "GPL (>= 2)", + "Suggests": [ + "tinytest", + "simplermarkdown", + "rbenchmark" + ], + "VignetteBuilder": "simplermarkdown", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Dirk Eddelbuettel [aut, cre] (ORCID: ), Antoine Lucas [ctb] (ORCID: ), Jarek Tuszynski [ctb], Henrik Bengtsson [ctb] (ORCID: ), Simon Urbanek [ctb] (ORCID: ), Mario Frasca [ctb], Bryan Lewis [ctb], Murray Stokely [ctb], Hannes Muehleisen [ctb] (ORCID: ), Duncan Murdoch [ctb], Jim Hester [ctb] (ORCID: ), Wush Wu [ctb] (ORCID: ), Qiang Kou [ctb] (ORCID: ), Thierry Onkelinx [ctb] (ORCID: ), Michel Lang [ctb] (ORCID: ), Viliam Simko [ctb], Kurt Hornik [ctb] (ORCID: ), Radford Neal [ctb] (ORCID: ), Kendon Bell [ctb] (ORCID: ), Matthew de Queljoe [ctb], Dmitry Selivanov [ctb] (ORCID: ), Ion Suruceanu [ctb] (ORCID: ), Bill Denney [ctb] (ORCID: ), Dirk Schumacher [ctb], András Svraka [ctb] (ORCID: ), Sergey Fedorov [ctb] (ORCID: ), Will Landau [ctb] (ORCID: ), Floris Vanderhaeghe [ctb] (ORCID: ), Kevin Tappe [ctb], Harris McGehee [ctb], Tim Mastny [ctb], Aaron Peikert [ctb] (ORCID: ), Mark van der Loo [ctb] (ORCID: ), Chris Muir [ctb] (ORCID: ), Moritz Beller [ctb] (ORCID: ), Sebastian Campbell [ctb] (ORCID: ), Winston Chang [ctb] (ORCID: ), Dean Attali [ctb] (ORCID: ), Michael Chirico [ctb] (ORCID: ), Kevin Ushey [ctb] (ORCID: ), Carl Pearson [ctb] (ORCID: )", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "dotCall64": { + "Package": "dotCall64", + "Version": "1.2", + "Source": "Repository", + "Type": "Package", + "Title": "Enhanced Foreign Function Interface Supporting Long Vectors", + "Date": "2024-10-03", + "Authors@R": "c(person(\"Kaspar\", \"Moesinger\", role = c(\"aut\"), email = \"kaspar.moesinger@gmail.com\"), person(\"Florian\", \"Gerber\", role = c(\"aut\"), email = \"flora.fauna.gerber@gmail.com\", comment = c(ORCID = \"0000-0001-8545-5263\")), person(\"Reinhard\", \"Furrer\", role = c(\"cre\", \"ctb\"), email = \"reinhard.furrer@uzh.ch\", comment = c(ORCID = \"0000-0002-6319-2332\")))", + "Description": "Provides .C64(), which is an enhanced version of .C() and .Fortran() from the foreign function interface. .C64() supports long vectors, arguments of type 64-bit integer, and provides a mechanism to avoid unnecessary copies of read-only and write-only arguments. This makes it a convenient and fast interface to C/C++ and Fortran code.", + "License": "GPL (>= 2)", + "URL": "https://git.math.uzh.ch/reinhard.furrer/dotCall64", + "BugReports": "https://git.math.uzh.ch/reinhard.furrer/dotCall64/-/issues", + "Depends": [ + "R (>= 4.0)" + ], + "Suggests": [ + "microbenchmark", + "RhpcBLASctl", + "RColorBrewer", + "roxygen2", + "spam", + "testthat" + ], + "Collate": "'vector_dc.R' 'dotCall64.R' 'zzz.R'", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Author": "Kaspar Moesinger [aut], Florian Gerber [aut] (), Reinhard Furrer [cre, ctb] ()", + "Maintainer": "Reinhard Furrer ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.1.4", + "Source": "Repository", + "Type": "Package", + "Title": "A Grammar of Data Manipulation", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Romain\", \"François\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"Lionel\", \"Henry\", role = \"aut\"), person(\"Kirill\", \"Müller\", role = \"aut\", comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4777-038X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A fast, consistent tool for working with data frame like objects, both in memory and out of memory.", + "License": "MIT + file LICENSE", + "URL": "https://dplyr.tidyverse.org, https://github.com/tidyverse/dplyr", + "BugReports": "https://github.com/tidyverse/dplyr/issues", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "generics", + "glue (>= 1.3.2)", + "lifecycle (>= 1.0.3)", + "magrittr (>= 1.5)", + "methods", + "pillar (>= 1.9.0)", + "R6", + "rlang (>= 1.1.0)", + "tibble (>= 3.2.0)", + "tidyselect (>= 1.2.0)", + "utils", + "vctrs (>= 0.6.4)" + ], + "Suggests": [ + "bench", + "broom", + "callr", + "covr", + "DBI", + "dbplyr (>= 2.2.1)", + "ggplot2", + "knitr", + "Lahman", + "lobstr", + "microbenchmark", + "nycflights13", + "purrr", + "rmarkdown", + "RMySQL", + "RPostgreSQL", + "RSQLite", + "stringi (>= 1.7.6)", + "testthat (>= 3.1.5)", + "tidyr (>= 1.3.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse, shiny, pkgdown, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre] (), Romain François [aut] (), Lionel Henry [aut], Kirill Müller [aut] (), Davis Vaughan [aut] (), Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "RSPM" + }, + "dtplyr": { + "Package": "dtplyr", + "Version": "1.3.2", + "Source": "Repository", + "Title": "Data Table Back-End for 'dplyr'", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"cre\", \"aut\")), person(\"Maximilian\", \"Girlich\", role = \"aut\"), person(\"Mark\", \"Fairbanks\", role = \"aut\"), person(\"Ryan\", \"Dickerson\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides a data.table backend for 'dplyr'. The goal of 'dtplyr' is to allow you to write 'dplyr' code that is automatically translated to the equivalent, but usually much faster, data.table code.", + "License": "MIT + file LICENSE", + "URL": "https://dtplyr.tidyverse.org, https://github.com/tidyverse/dtplyr", + "BugReports": "https://github.com/tidyverse/dtplyr/issues", + "Depends": [ + "R (>= 4.0)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "data.table (>= 1.13.0)", + "dplyr (>= 1.1.0)", + "glue", + "lifecycle", + "rlang (>= 1.0.4)", + "tibble", + "tidyselect (>= 1.2.0)", + "vctrs (>= 0.4.1)" + ], + "Suggests": [ + "bench", + "covr", + "knitr", + "rmarkdown", + "testthat (>= 3.1.2)", + "tidyr (>= 1.1.0)", + "waldo (>= 0.3.1)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2.9000", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [cre, aut], Maximilian Girlich [aut], Mark Fairbanks [aut], Ryan Dickerson [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "RSPM" + }, + "e1071": { + "Package": "e1071", + "Version": "1.7-17", + "Source": "Repository", + "Title": "Misc Functions of the Department of Statistics, Probability Theory Group (Formerly: E1071), TU Wien", + "Imports": [ + "graphics", + "grDevices", + "class", + "stats", + "methods", + "utils", + "proxy" + ], + "Suggests": [ + "cluster", + "mlbench", + "nnet", + "randomForest", + "rpart", + "SparseM", + "xtable", + "Matrix", + "MASS", + "slam" + ], + "Authors@R": "c(person(given = \"David\", family = \"Meyer\", role = c(\"aut\", \"cre\"), email = \"David.Meyer@R-project.org\", comment = c(ORCID = \"0000-0002-5196-3048\")), person(given = \"Evgenia\", family = \"Dimitriadou\", role = c(\"aut\",\"cph\")), person(given = \"Kurt\", family = \"Hornik\", role = \"aut\", email = \"Kurt.Hornik@R-project.org\", comment = c(ORCID = \"0000-0003-4198-9911\")), person(given = \"Andreas\", family = \"Weingessel\", role = \"aut\"), person(given = \"Friedrich\", family = \"Leisch\", role = \"aut\"), person(given = \"Chih-Chung\", family = \"Chang\", role = c(\"ctb\",\"cph\"), comment = \"libsvm C++-code\"), person(given = \"Chih-Chen\", family = \"Lin\", role = c(\"ctb\",\"cph\"), comment = \"libsvm C++-code\"))", + "Description": "Functions for latent class analysis, short time Fourier transform, fuzzy clustering, support vector machines, shortest path computation, bagged clustering, naive Bayes classifier, generalized k-nearest neighbour ...", + "License": "GPL-2 | GPL-3", + "LazyLoad": "yes", + "NeedsCompilation": "yes", + "Author": "David Meyer [aut, cre] (ORCID: ), Evgenia Dimitriadou [aut, cph], Kurt Hornik [aut] (ORCID: ), Andreas Weingessel [aut], Friedrich Leisch [aut], Chih-Chung Chang [ctb, cph] (libsvm C++-code), Chih-Chen Lin [ctb, cph] (libsvm C++-code)", + "Maintainer": "David Meyer ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "earth": { + "Package": "earth", + "Version": "5.3.5", + "Source": "Repository", + "Title": "Multivariate Adaptive Regression Splines", + "Authors@R": "c(person(given = \"Stephen\", family = \"Milborrow\", role = c(\"aut\", \"cre\"), email = \"milbo@sonic.net\"), person(given = \"Trevor\", family = \"Hastie\", role = \"aut\"), person(given = \"Rob\", family = \"Tibshirani\", role = \"aut\"), person(given = \"Alan\", family = \"Miller\", role = \"ctb\"), person(given = \"Thomas\", family = \"Lumley\", role = \"ctb\"))", + "Depends": [ + "R (>= 3.4.0)", + "Formula (>= 1.2-3)", + "plotmo (>= 3.6.0)" + ], + "Suggests": [ + "gam (>= 1.20)", + "mgcv (>= 1.8-26)", + "mda (>= 0.5-2)", + "MASS (>= 7.3-51)" + ], + "Description": "Build regression models using the techniques in Friedman's papers \"Fast MARS\" and \"Multivariate Adaptive Regression Splines\" . (The term \"MARS\" is trademarked and thus not used in the name of the package.)", + "License": "GPL-3", + "LazyData": "yes", + "URL": "http://www.milbo.users.sonic.net/earth/", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "RoxygenNote": "5.1.2", + "NeedsCompilation": "yes", + "Author": "Stephen Milborrow [aut, cre], Trevor Hastie [aut], Rob Tibshirani [aut], Alan Miller [ctb], Thomas Lumley [ctb]", + "Maintainer": "Stephen Milborrow ", + "Encoding": "UTF-8" + }, + "elevatr": { + "Package": "elevatr", + "Version": "0.99.1", + "Source": "Repository", + "Title": "Access Elevation Data from Various APIs", + "Authors@R": "c(person(\"Jeffrey\", \"Hollister\", email = \"hollister.jeff@epa.gov\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-9254-9740\")), person(\"Tarak\", \"Shah\", role = \"ctb\"), person(\"Jakub\", \"Nowosad\", role = \"ctb\", comment = c(ORCID = \"0000-0002-1057-3721\")), person(\"Alec L.\", \"Robitaille\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4706-1762\")), person(\"Marcus W.\", \"Beck\", role = \"rev\", comment = c(ORCID = \"0000-0002-4996-0059\")), person(\"Mike\", \"Johnson\", role = \"ctb\", comment = c(ORCID = \"0000-0002-5288-8350\")))", + "URL": "https://github.com/usepa/elevatr/", + "BugReports": "https://github.com/usepa/elevatr/issues/", + "Maintainer": "Jeffrey Hollister ", + "Description": "Several web services are available that provide access to elevation data. This package provides access to many of those services and returns elevation data either as an 'sf' simple features object from point elevation services or as a 'raster' object from raster elevation services. In future versions, 'elevatr' will drop support for 'raster' and will instead return 'terra' objects. Currently, the package supports access to the Amazon Web Services Terrain Tiles , the Open Topography Global Datasets API , and the USGS Elevation Point Query Service .", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "httr", + "jsonlite", + "progressr", + "sf", + "terra", + "future", + "furrr", + "purrr", + "units", + "slippymath", + "curl", + "raster", + "methods" + ], + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "LazyData": "true", + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "formatR", + "progress" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Jeffrey Hollister [aut, cre] (ORCID: ), Tarak Shah [ctb], Jakub Nowosad [ctb] (ORCID: ), Alec L. Robitaille [ctb] (ORCID: ), Marcus W. Beck [rev] (ORCID: ), Mike Johnson [ctb] (ORCID: )", + "Repository": "P3M" + }, + "evaluate": { + "Package": "evaluate", + "Version": "1.0.5", + "Source": "Repository", + "Type": "Package", + "Title": "Parsing and Evaluation Tools that Provide More Details than the Default", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Yihui\", \"Xie\", role = \"aut\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Michael\", \"Lawrence\", role = \"ctb\"), person(\"Thomas\", \"Kluyver\", role = \"ctb\"), person(\"Jeroen\", \"Ooms\", role = \"ctb\"), person(\"Barret\", \"Schloerke\", role = \"ctb\"), person(\"Adam\", \"Ryczkowski\", role = \"ctb\"), person(\"Hiroaki\", \"Yutani\", role = \"ctb\"), person(\"Michel\", \"Lang\", role = \"ctb\"), person(\"Karolis\", \"Koncevičius\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Parsing and evaluation tools that make it easy to recreate the command line behaviour of R.", + "License": "MIT + file LICENSE", + "URL": "https://evaluate.r-lib.org/, https://github.com/r-lib/evaluate", + "BugReports": "https://github.com/r-lib/evaluate/issues", + "Depends": [ + "R (>= 3.6.0)" + ], + "Suggests": [ + "callr", + "covr", + "ggplot2 (>= 3.3.6)", + "lattice", + "methods", + "pkgload", + "ragg (>= 1.4.0)", + "rlang (>= 1.1.5)", + "knitr", + "testthat (>= 3.0.0)", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Yihui Xie [aut] (ORCID: ), Michael Lawrence [ctb], Thomas Kluyver [ctb], Jeroen Ooms [ctb], Barret Schloerke [ctb], Adam Ryczkowski [ctb], Hiroaki Yutani [ctb], Michel Lang [ctb], Karolis Koncevičius [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "farver": { + "Package": "farver", + "Version": "2.1.2", + "Source": "Repository", + "Type": "Package", + "Title": "High Performance Colour Space Manipulation", + "Authors@R": "c( person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Berendea\", \"Nicolae\", role = \"aut\", comment = \"Author of the ColorSpace C++ library\"), person(\"Romain\", \"François\", , \"romain@purrple.cat\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "The encoding of colour can be handled in many different ways, using different colour spaces. As different colour spaces have different uses, efficient conversion between these representations are important. The 'farver' package provides a set of functions that gives access to very fast colour space conversion and comparisons implemented in C++, and offers speed improvements over the 'convertColor' function in the 'grDevices' package.", + "License": "MIT + file LICENSE", + "URL": "https://farver.data-imaginist.com, https://github.com/thomasp85/farver", + "BugReports": "https://github.com/thomasp85/farver/issues", + "Suggests": [ + "covr", + "testthat (>= 3.0.0)" + ], + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "NeedsCompilation": "yes", + "Author": "Thomas Lin Pedersen [cre, aut] (), Berendea Nicolae [aut] (Author of the ColorSpace C++ library), Romain François [aut] (), Posit, PBC [cph, fnd]", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "RSPM" + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.2.0", + "Source": "Repository", + "Title": "Fast Data Structures", + "Authors@R": "c( person(\"Winston\", \"Chang\", email = \"winston@posit.co\", role = c(\"aut\", \"cre\")), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(given = \"Tessil\", role = \"cph\", comment = \"hopscotch_map library\") )", + "Description": "Fast implementation of data structures, including a key-value store, stack, and queue. Environments are commonly used as key-value stores in R, but every time a new key is used, it is added to R's global symbol table, causing a small amount of memory leakage. This can be problematic in cases where many different keys are used. Fastmap avoids this memory leak issue by implementing the map using data structures in C++.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "Suggests": [ + "testthat (>= 2.1.1)" + ], + "URL": "https://r-lib.github.io/fastmap/, https://github.com/r-lib/fastmap", + "BugReports": "https://github.com/r-lib/fastmap/issues", + "NeedsCompilation": "yes", + "Author": "Winston Chang [aut, cre], Posit Software, PBC [cph, fnd], Tessil [cph] (hopscotch_map library)", + "Maintainer": "Winston Chang ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "fields": { + "Package": "fields", + "Version": "17.1", + "Source": "Repository", + "Date": "2025-09-03", + "Title": "Tools for Spatial Data", + "Authors@R": "c( person(\"Douglas\", \"Nychka\", role = c(\"aut\", \"cre\"), email = \"douglasnychka@gmail.com\"), person(\"Reinhard\", \"Furrer\", role = c(\"aut\"), email = \"reinhard.furrer@math.uzh.ch\"), person(\"John\", \"Paige\", role = c(\"aut\"), email = \"paigejo@uw.edu\"), person(\"Stephan\", \"Sain\", role = \"aut\", email = \"sainsr2@gmail.com\"), person(\"Florian\", \"Gerber\", role = \"aut\", email = \"flora.fauna.gerber@gmail.com\"), person(\"Matthew\", \"Iverson\", role = \"aut\", email = \"miverson@mines.edu\"), person(\"Rider\", \"Johnson\", role = \"aut\", email = \"riderjohnson@mines.edu\") )", + "Maintainer": "Douglas Nychka ", + "Description": "For curve, surface and function fitting with an emphasis on splines, spatial data, geostatistics, and spatial statistics. The major methods include Gaussian spatial process prediction (known as Kriging), cubic and thin plate splines, and compactly supported covariance functions for large data sets. The spline and spatial process methods are supported by functions that can determine the smoothing parameter (nugget and sill variance) and other covariance function parameters by cross validation and also by maximum likelihood. For spatial process prediction there is an easy to use function that also estimates the correlation scale (range parameter). A major feature is that any covariance function implemented in R and following a simple format can be used for spatial prediction. As included are fast approximations for prediction and conditional simulation for larger data sets. There are also many useful functions for plotting and working with spatial data as images. This package also contains an implementation of sparse matrix methods for large spatial data sets based the R sparse matrix package spam. Use help(fields) to get started and for an overview. All package graphics functions focus on extending base R graphics and are easy to interpret and modify. The fields source code is deliberately commented and provides useful explanations of numerical details as a companion to the manual pages. The commented source code can be viewed by expanding the source code version of this package and looking in the R subdirectory. The reference for fields can be generated by the citation function in R and has DOI . Development of this package was supported in part by the National Science Foundation Grant 1417857, the National Center for Atmospheric Research, and Colorado School of Mines. See the Fields URL for a vignette on using this package and some background on spatial statistics.", + "License": "GPL (>= 2)", + "URL": "https://github.com/dnychka/fieldsRPackage", + "Depends": [ + "R (>= 4.0.0)", + "methods", + "spam", + "viridisLite", + "RColorBrewer" + ], + "Imports": [ + "maps" + ], + "Suggests": [ + "mapproj" + ], + "NeedsCompilation": "yes", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Author": "Douglas Nychka [aut, cre], Reinhard Furrer [aut], John Paige [aut], Stephan Sain [aut], Florian Gerber [aut], Matthew Iverson [aut], Rider Johnson [aut]", + "Encoding": "UTF-8" + }, + "fontawesome": { + "Package": "fontawesome", + "Version": "0.5.3", + "Source": "Repository", + "Type": "Package", + "Title": "Easily Work with 'Font Awesome' Icons", + "Description": "Easily and flexibly insert 'Font Awesome' icons into 'R Markdown' documents and 'Shiny' apps. These icons can be inserted into HTML content through inline 'SVG' tags or 'i' tags. There is also a utility function for exporting 'Font Awesome' icons as 'PNG' images for those situations where raster graphics are needed.", + "Authors@R": "c( person(\"Richard\", \"Iannone\", , \"rich@posit.co\", c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"Christophe\", \"Dervieux\", , \"cderv@posit.co\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"ctb\"), person(\"Dave\", \"Gandy\", role = c(\"ctb\", \"cph\"), comment = \"Font-Awesome font\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/fontawesome, https://rstudio.github.io/fontawesome/", + "BugReports": "https://github.com/rstudio/fontawesome/issues", + "Encoding": "UTF-8", + "ByteCompile": "true", + "RoxygenNote": "7.3.2", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "rlang (>= 1.0.6)", + "htmltools (>= 0.5.1.1)" + ], + "Suggests": [ + "covr", + "dplyr (>= 1.0.8)", + "gt (>= 0.9.0)", + "knitr (>= 1.31)", + "testthat (>= 3.0.0)", + "rsvg" + ], + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Richard Iannone [aut, cre] (), Christophe Dervieux [ctb] (), Winston Chang [ctb], Dave Gandy [ctb, cph] (Font-Awesome font), Posit Software, PBC [cph, fnd]", + "Maintainer": "Richard Iannone ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "forcats": { + "Package": "forcats", + "Version": "1.0.1", + "Source": "Repository", + "Title": "Tools for Working with Categorical Variables (Factors)", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Helpers for reordering factor levels (including moving specified levels to front, ordering by first appearance, reversing, and randomly shuffling), and tools for modifying factor levels (including collapsing rare levels into other, 'anonymising', and manually 'recoding').", + "License": "MIT + file LICENSE", + "URL": "https://forcats.tidyverse.org/, https://github.com/tidyverse/forcats", + "BugReports": "https://github.com/tidyverse/forcats/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "glue", + "lifecycle", + "magrittr", + "rlang (>= 1.0.0)", + "tibble" + ], + "Suggests": [ + "covr", + "dplyr", + "ggplot2", + "knitr", + "readr", + "rmarkdown", + "testthat (>= 3.0.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hadley Wickham ", + "Repository": "RSPM" + }, + "foreach": { + "Package": "foreach", + "Version": "1.5.2", + "Source": "Repository", + "Type": "Package", + "Title": "Provides Foreach Looping Construct", + "Authors@R": "c(person(\"Folashade\", \"Daniel\", role=\"cre\", email=\"fdaniel@microsoft.com\"), person(\"Hong\", \"Ooi\", role=\"ctb\"), person(\"Rich\", \"Calaway\", role=\"ctb\"), person(\"Microsoft\", role=c(\"aut\", \"cph\")), person(\"Steve\", \"Weston\", role=\"aut\"))", + "Description": "Support for the foreach looping construct. Foreach is an idiom that allows for iterating over elements in a collection, without the use of an explicit loop counter. This package in particular is intended to be used for its return value, rather than for its side effects. In that sense, it is similar to the standard lapply function, but doesn't require the evaluation of a function. Using foreach without side effects also facilitates executing the loop in parallel.", + "License": "Apache License (== 2.0)", + "URL": "https://github.com/RevolutionAnalytics/foreach", + "BugReports": "https://github.com/RevolutionAnalytics/foreach/issues", + "Depends": [ + "R (>= 2.5.0)" + ], + "Imports": [ + "codetools", + "utils", + "iterators" + ], + "Suggests": [ + "randomForest", + "doMC", + "doParallel", + "testthat", + "knitr", + "rmarkdown" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "7.1.1", + "Collate": "'callCombine.R' 'foreach.R' 'do.R' 'foreach-ext.R' 'foreach-pkg.R' 'getDoPar.R' 'getDoSeq.R' 'getsyms.R' 'iter.R' 'nextElem.R' 'onLoad.R' 'setDoPar.R' 'setDoSeq.R' 'times.R' 'utils.R'", + "NeedsCompilation": "no", + "Author": "Folashade Daniel [cre], Hong Ooi [ctb], Rich Calaway [ctb], Microsoft [aut, cph], Steve Weston [aut]", + "Maintainer": "Folashade Daniel ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "forested": { + "Package": "forested", + "Version": "0.2.0", + "Source": "Repository", + "Title": "Forest Attributes in U.S. States", + "Authors@R": "c( person(\"Grayson\", \"White\", , \"graysonwhite13@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0003-4993-2792\")), person(\"Hannah\", \"Frick\", , \"hannah@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-6049-5258\")), person(\"Simon\", \"Couch\", , \"simon.couch@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0001-5676-5107\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "A small subset of plots throughout the U.S. are sampled and assessed \"on-the-ground\" as forested or non-forested by the U.S. Department of Agriculture, Forest Service, Forest Inventory and Analysis (FIA) Program, but the FIA also has access to remotely sensed data for all land in the country. The 'forested' package contains data frames intended for use in predictive modeling applications where the more easily-accessible remotely sensed data can be used to predict whether a plot is forested or non-forested. Currently, the package provides data for Washington and Georgia.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/simonpcouch/forested, https://simonpcouch.github.io/forested/", + "BugReports": "https://github.com/simonpcouch/forested/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Suggests": [ + "knitr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-05-05", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Grayson White [aut] (ORCID: ), Hannah Frick [aut] (ORCID: ), Simon Couch [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Simon Couch ", + "Repository": "RSPM" + }, + "fs": { + "Package": "fs", + "Version": "1.6.6", + "Source": "Repository", + "Title": "Cross-Platform File System Operations Based on 'libuv'", + "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"libuv project contributors\", role = \"cph\", comment = \"libuv library\"), person(\"Joyent, Inc. and other Node contributors\", role = \"cph\", comment = \"libuv library\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A cross-platform interface to file system operations, built on top of the 'libuv' C library.", + "License": "MIT + file LICENSE", + "URL": "https://fs.r-lib.org, https://github.com/r-lib/fs", + "BugReports": "https://github.com/r-lib/fs/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "covr", + "crayon", + "knitr", + "pillar (>= 1.0.0)", + "rmarkdown", + "spelling", + "testthat (>= 3.0.0)", + "tibble (>= 1.1.0)", + "vctrs (>= 0.3.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Copyright": "file COPYRIGHTS", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.2.3", + "SystemRequirements": "GNU make", + "NeedsCompilation": "yes", + "Author": "Jim Hester [aut], Hadley Wickham [aut], Gábor Csárdi [aut, cre], libuv project contributors [cph] (libuv library), Joyent, Inc. and other Node contributors [cph] (libuv library), Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "furrr": { + "Package": "furrr", + "Version": "0.3.1", + "Source": "Repository", + "Title": "Apply Mapping Functions in Parallel using Futures", + "Authors@R": "c( person(\"Davis\", \"Vaughan\", , \"davis@rstudio.com\", role = c(\"aut\", \"cre\")), person(\"Matt\", \"Dancho\", , \"mdancho@business-science.io\", role = \"aut\"), person(\"RStudio\", role = c(\"cph\", \"fnd\")) )", + "Description": "Implementations of the family of map() functions from 'purrr' that can be resolved using any 'future'-supported backend, e.g. parallel on the local machine or distributed on a compute cluster.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/DavisVaughan/furrr, https://furrr.futureverse.org/", + "BugReports": "https://github.com/DavisVaughan/furrr/issues", + "Depends": [ + "future (>= 1.25.0)", + "R (>= 3.4.0)" + ], + "Imports": [ + "globals (>= 0.14.0)", + "lifecycle (>= 1.0.1)", + "purrr (>= 0.3.4)", + "rlang (>= 1.0.2)", + "vctrs (>= 0.4.1)" + ], + "Suggests": [ + "carrier", + "covr", + "dplyr (>= 0.7.4)", + "knitr", + "listenv (>= 0.6.0)", + "magrittr", + "rmarkdown", + "testthat (>= 3.0.0)", + "tidyselect", + "withr" + ], + "Config/Needs/website": "progressr", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.1", + "NeedsCompilation": "no", + "Author": "Davis Vaughan [aut, cre], Matt Dancho [aut], RStudio [cph, fnd]", + "Maintainer": "Davis Vaughan ", + "Repository": "RSPM" + }, + "future": { + "Package": "future", + "Version": "1.69.0", + "Source": "Repository", + "Title": "Unified Parallel and Distributed Processing in R for Everyone", + "Depends": [ + "R (>= 3.2.0)" + ], + "Imports": [ + "digest", + "globals (>= 0.18.0)", + "listenv (>= 0.8.0)", + "parallel", + "parallelly (>= 1.44.0)", + "utils" + ], + "Suggests": [ + "methods", + "RhpcBLASctl", + "R.rsp", + "markdown" + ], + "VignetteBuilder": "R.rsp", + "Authors@R": "c(person(\"Henrik\", \"Bengtsson\", role = c(\"aut\", \"cre\", \"cph\"), email = \"henrikb@braju.com\", comment = c(ORCID = \"0000-0002-7579-5165\")))", + "Description": "The purpose of this package is to provide a lightweight and unified Future API for sequential and parallel processing of R expression via futures. The simplest way to evaluate an expression in parallel is to use `x %<-% { expression }` with `plan(multisession)`. This package implements sequential, multicore, multisession, and cluster futures. With these, R expressions can be evaluated on the local machine, in parallel a set of local machines, or distributed on a mix of local and remote machines. Extensions to this package implement additional backends for processing futures via compute cluster schedulers, etc. Because of its unified API, there is no need to modify any code in order switch from sequential on the local machine to, say, distributed processing on a remote compute cluster. Another strength of this package is that global variables and functions are automatically identified and exported as needed, making it straightforward to tweak existing code to make use of futures.", + "License": "LGPL (>= 2.1)", + "LazyLoad": "TRUE", + "ByteCompile": "TRUE", + "URL": "https://future.futureverse.org, https://github.com/futureverse/future", + "BugReports": "https://github.com/futureverse/future/issues", + "Language": "en-US", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Collate": "'000.bquote.R' '000.import.R' '000.re-exports.R' '009.deprecation.R' '010.tweakable.R' '010.utils-parallelly.R' 'backend_api-01-FutureBackend-class.R' 'backend_api-03.MultiprocessFutureBackend-class.R' 'backend_api-11.ClusterFutureBackend-class.R' 'backend_api-11.MulticoreFutureBackend-class.R' 'backend_api-11.SequentialFutureBackend-class.R' 'backend_api-13.MultisessionFutureBackend-class.R' 'backend_api-ConstantFuture-class.R' 'backend_api-Future-class.R' 'backend_api-FutureRegistry.R' 'backend_api-UniprocessFuture-class.R' 'backend_api-evalFuture.R' 'core_api-cancel.R' 'core_api-future.R' 'core_api-reset.R' 'core_api-resolved.R' 'core_api-value.R' 'delayed_api-futureAssign.R' 'delayed_api-futureOf.R' 'demo_api-mandelbrot.R' 'infix_api-01-futureAssign_OP.R' 'infix_api-02-globals_OP.R' 'infix_api-03-seed_OP.R' 'infix_api-04-stdout_OP.R' 'infix_api-05-conditions_OP.R' 'infix_api-06-lazy_OP.R' 'infix_api-07-label_OP.R' 'infix_api-08-plan_OP.R' 'infix_api-09-tweak_OP.R' 'protected_api-FutureCondition-class.R' 'protected_api-FutureGlobals-class.R' 'protected_api-FutureResult-class.R' 'protected_api-futures.R' 'protected_api-globals.R' 'protected_api-journal.R' 'protected_api-resolve.R' 'protected_api-result.R' 'protected_api-signalConditions.R' 'testme.R' 'utils-basic.R' 'utils-conditions.R' 'utils-connections.R' 'utils-debug.R' 'utils-immediateCondition.R' 'utils-marshalling.R' 'utils-objectSize.R' 'utils-options.R' 'utils-prune_pkg_code.R' 'utils-registerClusterTypes.R' 'utils-rng_utils.R' 'utils-signalEarly.R' 'utils-stealth_sample.R' 'utils-sticky_globals.R' 'utils-tweakExpression.R' 'utils-uuid.R' 'utils-whichIndex.R' 'utils_api-backtrace.R' 'utils_api-capture_journals.R' 'utils_api-futureCall.R' 'utils_api-futureSessionInfo.R' 'utils_api-makeClusterFuture.R' 'utils_api-minifuture.R' 'utils_api-nbrOfWorkers.R' 'utils_api-plan.R' 'utils_api-plan-with.R' 'utils_api-sessionDetails.R' 'utils_api-tweak.R' 'zzz.R'", + "NeedsCompilation": "no", + "Author": "Henrik Bengtsson [aut, cre, cph] (ORCID: )", + "Maintainer": "Henrik Bengtsson ", + "Repository": "RSPM" + }, + "future.apply": { + "Package": "future.apply", + "Version": "1.20.1", + "Source": "Repository", + "Title": "Apply Function to Elements in Parallel using Futures", + "Depends": [ + "R (>= 3.2.0)", + "future (>= 1.49.0)" + ], + "Imports": [ + "globals", + "parallel", + "utils" + ], + "Suggests": [ + "datasets", + "stats", + "tools", + "listenv", + "R.rsp", + "markdown" + ], + "VignetteBuilder": "R.rsp", + "Authors@R": "c(person(\"Henrik\", \"Bengtsson\", role = c(\"aut\", \"cre\", \"cph\"), email = \"henrikb@braju.com\", comment = c(ORCID = \"0000-0002-7579-5165\")), person(\"R Core Team\", role = c(\"cph\", \"ctb\")))", + "Description": "Implementations of apply(), by(), eapply(), lapply(), Map(), .mapply(), mapply(), replicate(), sapply(), tapply(), and vapply() that can be resolved using any future-supported backend, e.g. parallel on the local machine or distributed on a compute cluster. These future_*apply() functions come with the same pros and cons as the corresponding base-R *apply() functions but with the additional feature of being able to be processed via the future framework .", + "License": "GPL (>= 2)", + "LazyLoad": "TRUE", + "URL": "https://future.apply.futureverse.org, https://github.com/futureverse/future.apply", + "BugReports": "https://github.com/futureverse/future.apply/issues", + "Language": "en-US", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Henrik Bengtsson [aut, cre, cph] (ORCID: ), R Core Team [cph, ctb]", + "Maintainer": "Henrik Bengtsson ", + "Repository": "RSPM" + }, + "gargle": { + "Package": "gargle", + "Version": "1.6.0", + "Source": "Repository", + "Title": "Utilities for Working with Google APIs", + "Authors@R": "c( person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Craig\", \"Citro\", , \"craigcitro@google.com\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Google Inc\", role = \"cph\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides utilities for working with Google APIs . This includes functions and classes for handling common credential types and for preparing, executing, and processing HTTP requests.", + "License": "MIT + file LICENSE", + "URL": "https://gargle.r-lib.org, https://github.com/r-lib/gargle", + "BugReports": "https://github.com/r-lib/gargle/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cli (>= 3.0.1)", + "fs (>= 1.3.1)", + "glue (>= 1.3.0)", + "httr (>= 1.4.5)", + "jsonlite", + "lifecycle (>= 0.2.0)", + "openssl", + "rappdirs", + "rlang (>= 1.1.0)", + "stats", + "utils", + "withr" + ], + "Suggests": [ + "aws.ec2metadata", + "aws.signature", + "covr", + "httpuv", + "knitr", + "rmarkdown", + "sodium", + "spelling", + "testthat (>= 3.1.7)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.2.9000", + "NeedsCompilation": "no", + "Author": "Jennifer Bryan [aut, cre] (ORCID: ), Craig Citro [aut], Hadley Wickham [aut] (ORCID: ), Google Inc [cph], Posit Software, PBC [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "RSPM" + }, + "generics": { + "Package": "generics", + "Version": "0.1.4", + "Source": "Repository", + "Title": "Common S3 Generics not Provided by Base R Methods Related to Model Fitting", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Max\", \"Kuhn\", , \"max@posit.co\", role = \"aut\"), person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"https://ror.org/03wc8by49\")) )", + "Description": "In order to reduce potential package dependencies and conflicts, generics provides a number of commonly used S3 generics.", + "License": "MIT + file LICENSE", + "URL": "https://generics.r-lib.org, https://github.com/r-lib/generics", + "BugReports": "https://github.com/r-lib/generics/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "covr", + "pkgload", + "testthat (>= 3.0.0)", + "tibble", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre] (ORCID: ), Max Kuhn [aut], Davis Vaughan [aut], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hadley Wickham ", + "Repository": "RSPM" + }, + "geojsonsf": { + "Package": "geojsonsf", + "Version": "2.0.5", + "Source": "Repository", + "Type": "Package", + "Title": "GeoJSON to Simple Feature Converter", + "Date": "2025-11-25", + "Authors@R": "c( person(\"David\", \"Cooley\", ,\"dcooley@symbolix.com.au\", role = c(\"aut\", \"cre\")), person(\"Andy\", \"Teucher\", ,\"andy.teucher@gmail.com\", role = \"ctb\") )", + "Description": "Converts Between GeoJSON and simple feature objects.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/SymbolixAU/geojsonsf", + "BugReports": "https://github.com/SymbolixAU/geojsonsf/issues", + "Encoding": "UTF-8", + "LazyData": "true", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "Rcpp (>= 1.1.0)" + ], + "LinkingTo": [ + "geometries (>= 0.2.5)", + "jsonify (>= 1.2.3)", + "rapidjsonr (>= 1.2.1)", + "Rcpp", + "sfheaders (>= 0.4.5)" + ], + "RoxygenNote": "7.3.3", + "Suggests": [ + "covr", + "jsonify", + "knitr", + "rmarkdown", + "tinytest" + ], + "VignetteBuilder": "knitr", + "NeedsCompilation": "yes", + "Author": "David Cooley [aut, cre], Andy Teucher [ctb]", + "Maintainer": "David Cooley ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "geometries": { + "Package": "geometries", + "Version": "0.2.5", + "Source": "Repository", + "Type": "Package", + "Title": "Convert Between R Objects and Geometric Structures", + "Date": "2025-11-23", + "Authors@R": "c( person(\"David\", \"Cooley\", ,\"david.cooley.au@gmail.com\", role = c(\"aut\", \"cre\")) )", + "Description": "Geometry shapes in 'R' are typically represented by matrices (points, lines), with more complex shapes being lists of matrices (polygons). 'Geometries' will convert various 'R' objects into these shapes. Conversion functions are available at both the 'R' level, and through 'Rcpp'.", + "License": "MIT + file LICENSE", + "URL": "https://dcooley.github.io/geometries/", + "BugReports": "https://github.com/dcooley/geometries/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "LinkingTo": [ + "Rcpp" + ], + "Imports": [ + "Rcpp (>= 1.1.0)" + ], + "Suggests": [ + "covr", + "knitr", + "rmarkdown", + "tinytest" + ], + "VignetteBuilder": "knitr", + "NeedsCompilation": "yes", + "Author": "David Cooley [aut, cre]", + "Maintainer": "David Cooley ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "ggcorrplot": { + "Package": "ggcorrplot", + "Version": "0.1.4.1", + "Source": "Repository", + "Type": "Package", + "Title": "Visualization of a Correlation Matrix using 'ggplot2'", + "Authors@R": "c(person(given = \"Alboukadel\", family = \"Kassambara\", role = c(\"aut\", \"cre\"), email = \"alboukadel.kassambara@gmail.com\"), person(given = \"Indrajeet\", family = \"Patil\", role = \"ctb\", email = \"patilindrajeet.science@gmail.com\", comment = c(ORCID = \"0000-0003-1995-6531\", Twitter = \"@patilindrajeets\")))", + "Description": "The 'ggcorrplot' package can be used to visualize easily a correlation matrix using 'ggplot2'. It provides a solution for reordering the correlation matrix and displays the significance level on the plot. It also includes a function for computing a matrix of correlation p-values.", + "License": "GPL-2", + "URL": "http://www.sthda.com/english/wiki/ggcorrplot-visualization-of-a-correlation-matrix-using-ggplot2", + "BugReports": "https://github.com/kassambara/ggcorrplot/issues", + "Depends": [ + "R (>= 3.3)", + "ggplot2 (>= 3.3.6)" + ], + "Imports": [ + "reshape2", + "stats" + ], + "Suggests": [ + "testthat (>= 3.0.0)", + "knitr", + "spelling", + "vdiffr (>= 1.0.0)" + ], + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.1.0", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Alboukadel Kassambara [aut, cre], Indrajeet Patil [ctb] (, @patilindrajeets)", + "Maintainer": "Alboukadel Kassambara ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "ggplot2": { + "Package": "ggplot2", + "Version": "4.0.1", + "Source": "Repository", + "Title": "Create Elegant Data Visualisations Using the Grammar of Graphics", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Winston\", \"Chang\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Lionel\", \"Henry\", role = \"aut\"), person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Kohske\", \"Takahashi\", role = \"aut\"), person(\"Claus\", \"Wilke\", role = \"aut\", comment = c(ORCID = \"0000-0002-7470-9261\")), person(\"Kara\", \"Woo\", role = \"aut\", comment = c(ORCID = \"0000-0002-5125-4188\")), person(\"Hiroaki\", \"Yutani\", role = \"aut\", comment = c(ORCID = \"0000-0002-3385-7233\")), person(\"Dewey\", \"Dunnington\", role = \"aut\", comment = c(ORCID = \"0000-0002-9415-4582\")), person(\"Teun\", \"van den Brand\", role = \"aut\", comment = c(ORCID = \"0000-0002-9335-7468\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "A system for 'declaratively' creating graphics, based on \"The Grammar of Graphics\". You provide the data, tell 'ggplot2' how to map variables to aesthetics, what graphical primitives to use, and it takes care of the details.", + "License": "MIT + file LICENSE", + "URL": "https://ggplot2.tidyverse.org, https://github.com/tidyverse/ggplot2", + "BugReports": "https://github.com/tidyverse/ggplot2/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli", + "grDevices", + "grid", + "gtable (>= 0.3.6)", + "isoband", + "lifecycle (> 1.0.1)", + "rlang (>= 1.1.0)", + "S7", + "scales (>= 1.4.0)", + "stats", + "vctrs (>= 0.6.0)", + "withr (>= 2.5.0)" + ], + "Suggests": [ + "broom", + "covr", + "dplyr", + "ggplot2movies", + "hexbin", + "Hmisc", + "hms", + "knitr", + "mapproj", + "maps", + "MASS", + "mgcv", + "multcomp", + "munsell", + "nlme", + "profvis", + "quantreg", + "quarto", + "ragg (>= 1.2.6)", + "RColorBrewer", + "roxygen2", + "rpart", + "sf (>= 0.7-3)", + "svglite (>= 2.1.2)", + "testthat (>= 3.1.5)", + "tibble", + "vdiffr (>= 1.0.6)", + "xml2" + ], + "Enhances": [ + "sp" + ], + "VignetteBuilder": "quarto", + "Config/Needs/website": "ggtext, tidyr, forcats, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-23", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.3", + "Collate": "'ggproto.R' 'ggplot-global.R' 'aaa-.R' 'aes-colour-fill-alpha.R' 'aes-evaluation.R' 'aes-group-order.R' 'aes-linetype-size-shape.R' 'aes-position.R' 'all-classes.R' 'compat-plyr.R' 'utilities.R' 'aes.R' 'annotation-borders.R' 'utilities-checks.R' 'legend-draw.R' 'geom-.R' 'annotation-custom.R' 'annotation-logticks.R' 'scale-type.R' 'layer.R' 'make-constructor.R' 'geom-polygon.R' 'geom-map.R' 'annotation-map.R' 'geom-raster.R' 'annotation-raster.R' 'annotation.R' 'autolayer.R' 'autoplot.R' 'axis-secondary.R' 'backports.R' 'bench.R' 'bin.R' 'coord-.R' 'coord-cartesian-.R' 'coord-fixed.R' 'coord-flip.R' 'coord-map.R' 'coord-munch.R' 'coord-polar.R' 'coord-quickmap.R' 'coord-radial.R' 'coord-sf.R' 'coord-transform.R' 'data.R' 'docs_layer.R' 'facet-.R' 'facet-grid-.R' 'facet-null.R' 'facet-wrap.R' 'fortify-map.R' 'fortify-models.R' 'fortify-spatial.R' 'fortify.R' 'stat-.R' 'geom-abline.R' 'geom-rect.R' 'geom-bar.R' 'geom-tile.R' 'geom-bin2d.R' 'geom-blank.R' 'geom-boxplot.R' 'geom-col.R' 'geom-path.R' 'geom-contour.R' 'geom-point.R' 'geom-count.R' 'geom-crossbar.R' 'geom-segment.R' 'geom-curve.R' 'geom-defaults.R' 'geom-ribbon.R' 'geom-density.R' 'geom-density2d.R' 'geom-dotplot.R' 'geom-errorbar.R' 'geom-freqpoly.R' 'geom-function.R' 'geom-hex.R' 'geom-histogram.R' 'geom-hline.R' 'geom-jitter.R' 'geom-label.R' 'geom-linerange.R' 'geom-pointrange.R' 'geom-quantile.R' 'geom-rug.R' 'geom-sf.R' 'geom-smooth.R' 'geom-spoke.R' 'geom-text.R' 'geom-violin.R' 'geom-vline.R' 'ggplot2-package.R' 'grob-absolute.R' 'grob-dotstack.R' 'grob-null.R' 'grouping.R' 'properties.R' 'margins.R' 'theme-elements.R' 'guide-.R' 'guide-axis.R' 'guide-axis-logticks.R' 'guide-axis-stack.R' 'guide-axis-theta.R' 'guide-legend.R' 'guide-bins.R' 'guide-colorbar.R' 'guide-colorsteps.R' 'guide-custom.R' 'guide-none.R' 'guide-old.R' 'guides-.R' 'guides-grid.R' 'hexbin.R' 'import-standalone-obj-type.R' 'import-standalone-types-check.R' 'labeller.R' 'labels.R' 'layer-sf.R' 'layout.R' 'limits.R' 'performance.R' 'plot-build.R' 'plot-construction.R' 'plot-last.R' 'plot.R' 'position-.R' 'position-collide.R' 'position-dodge.R' 'position-dodge2.R' 'position-identity.R' 'position-jitter.R' 'position-jitterdodge.R' 'position-nudge.R' 'position-stack.R' 'quick-plot.R' 'reshape-add-margins.R' 'save.R' 'scale-.R' 'scale-alpha.R' 'scale-binned.R' 'scale-brewer.R' 'scale-colour.R' 'scale-continuous.R' 'scale-date.R' 'scale-discrete-.R' 'scale-expansion.R' 'scale-gradient.R' 'scale-grey.R' 'scale-hue.R' 'scale-identity.R' 'scale-linetype.R' 'scale-linewidth.R' 'scale-manual.R' 'scale-shape.R' 'scale-size.R' 'scale-steps.R' 'scale-view.R' 'scale-viridis.R' 'scales-.R' 'stat-align.R' 'stat-bin.R' 'stat-summary-2d.R' 'stat-bin2d.R' 'stat-bindot.R' 'stat-binhex.R' 'stat-boxplot.R' 'stat-connect.R' 'stat-contour.R' 'stat-count.R' 'stat-density-2d.R' 'stat-density.R' 'stat-ecdf.R' 'stat-ellipse.R' 'stat-function.R' 'stat-identity.R' 'stat-manual.R' 'stat-qq-line.R' 'stat-qq.R' 'stat-quantilemethods.R' 'stat-sf-coordinates.R' 'stat-sf.R' 'stat-smooth-methods.R' 'stat-smooth.R' 'stat-sum.R' 'stat-summary-bin.R' 'stat-summary-hex.R' 'stat-summary.R' 'stat-unique.R' 'stat-ydensity.R' 'summarise-plot.R' 'summary.R' 'theme.R' 'theme-defaults.R' 'theme-current.R' 'theme-sub.R' 'utilities-break.R' 'utilities-grid.R' 'utilities-help.R' 'utilities-patterns.R' 'utilities-resolution.R' 'utilities-tidy-eval.R' 'zxx.R' 'zzz.R'", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut] (ORCID: ), Winston Chang [aut] (ORCID: ), Lionel Henry [aut], Thomas Lin Pedersen [aut, cre] (ORCID: ), Kohske Takahashi [aut], Claus Wilke [aut] (ORCID: ), Kara Woo [aut] (ORCID: ), Hiroaki Yutani [aut] (ORCID: ), Dewey Dunnington [aut] (ORCID: ), Teun van den Brand [aut] (ORCID: ), Posit, PBC [cph, fnd] (ROR: )", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "RSPM" + }, + "ggrepel": { + "Package": "ggrepel", + "Version": "0.9.6", + "Source": "Repository", + "Authors@R": "c( person(\"Kamil\", \"Slowikowski\", email = \"kslowikowski@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-2843-6370\")), person(\"Alicia\", \"Schep\", role = \"ctb\", comment = c(ORCID = \"0000-0002-3915-0618\")), person(\"Sean\", \"Hughes\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9409-9405\")), person(\"Trung Kien\", \"Dang\", role = \"ctb\", comment = c(ORCID = \"0000-0001-7562-6495\")), person(\"Saulius\", \"Lukauskas\", role = \"ctb\"), person(\"Jean-Olivier\", \"Irisson\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4920-3880\")), person(\"Zhian N\", \"Kamvar\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1458-7108\")), person(\"Thompson\", \"Ryan\", role = \"ctb\", comment = c(ORCID = \"0000-0002-0450-8181\")), person(\"Dervieux\", \"Christophe\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Yutani\", \"Hiroaki\", role = \"ctb\"), person(\"Pierre\", \"Gramme\", role = \"ctb\"), person(\"Amir Masoud\", \"Abdol\", role = \"ctb\"), person(\"Malcolm\", \"Barrett\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0299-5825\")), person(\"Robrecht\", \"Cannoodt\", role = \"ctb\", comment = c(ORCID = \"0000-0003-3641-729X\")), person(\"Michał\", \"Krassowski\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9638-7785\")), person(\"Michael\", \"Chirico\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0787-087X\")), person(\"Pedro\", \"Aphalo\", role = \"ctb\", comment = c(ORCID = \"0000-0003-3385-972X\")), person(\"Francis\", \"Barton\", role = \"ctb\") )", + "Title": "Automatically Position Non-Overlapping Text Labels with 'ggplot2'", + "Description": "Provides text and label geoms for 'ggplot2' that help to avoid overlapping text labels. Labels repel away from each other and away from the data points.", + "Depends": [ + "R (>= 3.0.0)", + "ggplot2 (>= 2.2.0)" + ], + "Imports": [ + "grid", + "Rcpp", + "rlang (>= 0.3.0)", + "scales (>= 0.5.0)", + "withr (>= 2.5.0)" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "testthat", + "svglite", + "vdiffr", + "gridExtra", + "ggpp", + "patchwork", + "devtools", + "prettydoc", + "ggbeeswarm", + "dplyr", + "magrittr", + "readr", + "stringr" + ], + "VignetteBuilder": "knitr", + "License": "GPL-3 | file LICENSE", + "URL": "https://ggrepel.slowkow.com/, https://github.com/slowkow/ggrepel", + "BugReports": "https://github.com/slowkow/ggrepel/issues", + "RoxygenNote": "7.3.1", + "LinkingTo": [ + "Rcpp" + ], + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Kamil Slowikowski [aut, cre] (), Alicia Schep [ctb] (), Sean Hughes [ctb] (), Trung Kien Dang [ctb] (), Saulius Lukauskas [ctb], Jean-Olivier Irisson [ctb] (), Zhian N Kamvar [ctb] (), Thompson Ryan [ctb] (), Dervieux Christophe [ctb] (), Yutani Hiroaki [ctb], Pierre Gramme [ctb], Amir Masoud Abdol [ctb], Malcolm Barrett [ctb] (), Robrecht Cannoodt [ctb] (), Michał Krassowski [ctb] (), Michael Chirico [ctb] (), Pedro Aphalo [ctb] (), Francis Barton [ctb]", + "Maintainer": "Kamil Slowikowski ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "ggspatial": { + "Package": "ggspatial", + "Version": "1.1.10", + "Source": "Repository", + "Type": "Package", + "Title": "Spatial Data Framework for ggplot2", + "Authors@R": "c( person(\"Dewey\", \"Dunnington\", email = \"dewey@fishandwhistle.net\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-9415-4582\") ), person(\"Brent\", \"Thorne\", role = \"ctb\", comment = c(ORCID = \"0000-0002-1099-3857\")), person(\"Diego\", \"Hernangómez\", role = \"ctb\", comment = c(ORCID = \"0000-0001-8457-4658\")) )", + "Maintainer": "Dewey Dunnington ", + "Description": "Spatial data plus the power of the ggplot2 framework means easier mapping when input data are already in the form of spatial objects.", + "License": "GPL-3", + "Depends": [ + "R (>= 2.10)" + ], + "Imports": [ + "sf", + "ggplot2 (>= 3.0.0)", + "rosm (>= 0.2)", + "abind", + "methods", + "tibble", + "scales", + "tidyr", + "rlang", + "grid", + "glue" + ], + "Suggests": [ + "prettymapr", + "knitr", + "rmarkdown", + "sp", + "raster", + "terra", + "testthat (>= 3.0.0)", + "dplyr", + "withr", + "ggrepel", + "stars", + "covr", + "vdiffr", + "lwgeom" + ], + "URL": "https://paleolimbot.github.io/ggspatial/, https://github.com/paleolimbot/ggspatial", + "BugReports": "https://github.com/paleolimbot/ggspatial/issues", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Dewey Dunnington [aut, cre] (ORCID: ), Brent Thorne [ctb] (ORCID: ), Diego Hernangómez [ctb] (ORCID: )", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "globals": { + "Package": "globals", + "Version": "0.18.0", + "Source": "Repository", + "Depends": [ + "R (>= 3.1.2)" + ], + "Imports": [ + "codetools" + ], + "Title": "Identify Global Objects in R Expressions", + "Authors@R": "c( person(\"Henrik\", \"Bengtsson\", role=c(\"aut\", \"cre\", \"cph\"), email=\"henrikb@braju.com\"), person(\"Davis\",\"Vaughan\", role=\"ctb\", email=\"davis@posit.co\"))", + "Description": "Identifies global (\"unknown\" or \"free\") objects in R expressions by code inspection using various strategies (ordered, liberal, conservative, or deep-first search). The objective of this package is to make it as simple as possible to identify global objects for the purpose of exporting them in parallel, distributed compute environments.", + "License": "LGPL (>= 2.1)", + "LazyLoad": "TRUE", + "ByteCompile": "TRUE", + "Language": "en-US", + "Encoding": "UTF-8", + "URL": "https://globals.futureverse.org, https://github.com/futureverse/globals", + "BugReports": "https://github.com/futureverse/globals/issues", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Henrik Bengtsson [aut, cre, cph], Davis Vaughan [ctb]", + "Maintainer": "Henrik Bengtsson ", + "Repository": "RSPM" + }, + "glue": { + "Package": "glue", + "Version": "1.8.0", + "Source": "Repository", + "Title": "Interpreted String Literals", + "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "An implementation of interpreted string literals, inspired by Python's Literal String Interpolation and Docstrings and Julia's Triple-Quoted String Literals .", + "License": "MIT + file LICENSE", + "URL": "https://glue.tidyverse.org/, https://github.com/tidyverse/glue", + "BugReports": "https://github.com/tidyverse/glue/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "crayon", + "DBI (>= 1.2.0)", + "dplyr", + "knitr", + "magrittr", + "rlang", + "rmarkdown", + "RSQLite", + "testthat (>= 3.2.0)", + "vctrs (>= 0.3.0)", + "waldo (>= 0.5.3)", + "withr" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Config/Needs/website": "bench, forcats, ggbeeswarm, ggplot2, R.utils, rprintf, tidyr, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Jim Hester [aut] (), Jennifer Bryan [aut, cre] (), Posit Software, PBC [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "googledrive": { + "Package": "googledrive", + "Version": "2.1.2", + "Source": "Repository", + "Title": "An Interface to Google Drive", + "Authors@R": "c( person(\"Lucy\", \"D'Agostino McGowan\", , role = \"aut\"), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Manage Google Drive files from R.", + "License": "MIT + file LICENSE", + "URL": "https://googledrive.tidyverse.org, https://github.com/tidyverse/googledrive", + "BugReports": "https://github.com/tidyverse/googledrive/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.0.0)", + "gargle (>= 1.6.0)", + "glue (>= 1.4.2)", + "httr", + "jsonlite", + "lifecycle", + "magrittr", + "pillar (>= 1.9.0)", + "purrr (>= 1.0.1)", + "rlang (>= 1.0.2)", + "tibble (>= 2.0.0)", + "utils", + "uuid", + "vctrs (>= 0.3.0)", + "withr" + ], + "Suggests": [ + "curl", + "dplyr (>= 1.0.0)", + "knitr", + "rmarkdown", + "spelling", + "testthat (>= 3.1.5)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Lucy D'Agostino McGowan [aut], Jennifer Bryan [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "RSPM" + }, + "googlesheets4": { + "Package": "googlesheets4", + "Version": "1.1.2", + "Source": "Repository", + "Title": "Access Google Sheets using the Sheets API V4", + "Authors@R": "c( person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Interact with Google Sheets through the Sheets API v4 . \"API\" is an acronym for \"application programming interface\"; the Sheets API allows users to interact with Google Sheets programmatically, instead of via a web browser. The \"v4\" refers to the fact that the Sheets API is currently at version 4. This package can read and write both the metadata and the cell data in a Sheet.", + "License": "MIT + file LICENSE", + "URL": "https://googlesheets4.tidyverse.org, https://github.com/tidyverse/googlesheets4", + "BugReports": "https://github.com/tidyverse/googlesheets4/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cellranger", + "cli (>= 3.0.0)", + "curl", + "gargle (>= 1.6.0)", + "glue (>= 1.3.0)", + "googledrive (>= 2.1.0)", + "httr", + "ids", + "lifecycle", + "magrittr", + "methods", + "purrr", + "rematch2", + "rlang (>= 1.0.2)", + "tibble (>= 2.1.1)", + "utils", + "vctrs (>= 0.2.3)", + "withr" + ], + "Suggests": [ + "readr", + "rmarkdown", + "spelling", + "testthat (>= 3.1.7)" + ], + "ByteCompile": "true", + "Config/Needs/website": "tidyverse, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.2.9000", + "NeedsCompilation": "no", + "Author": "Jennifer Bryan [cre, aut] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "RSPM" + }, + "gower": { + "Package": "gower", + "Version": "1.0.2", + "Source": "Repository", + "Maintainer": "Mark van der Loo ", + "License": "GPL-3", + "Title": "Gower's Distance", + "Type": "Package", + "LazyLoad": "yes", + "Authors@R": "c( person(\"Mark\", \"van der Loo\", role=c(\"aut\",\"cre\"),email=\"mark.vanderloo@gmail.com\") , person(\"David\", \"Turner\", role=\"ctb\"))", + "Description": "Compute Gower's distance (or similarity) coefficient between records. Compute the top-n matches between records. Core algorithms are executed in parallel on systems supporting OpenMP.", + "URL": "https://github.com/markvanderloo/gower", + "BugReports": "https://github.com/markvanderloo/gower/issues", + "Suggests": [ + "tinytest (>= 0.9.3)" + ], + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Mark van der Loo [aut, cre], David Turner [ctb]", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "gt": { + "Package": "gt", + "Version": "1.2.0", + "Source": "Repository", + "Type": "Package", + "Title": "Easily Create Presentation-Ready Display Tables", + "Authors@R": "c( person(\"Richard\", \"Iannone\", , \"rich@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Barret\", \"Schloerke\", , \"barret@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"Shannon\", \"Haughton\", , \"shannon.l.haughton@gsk.com\", role = \"aut\"), person(\"Ellis\", \"Hughes\", , \"ellis.h.hughes@gsk.com\", role = \"aut\", comment = c(ORCID = \"0000-0003-0637-4436\")), person(\"Alexandra\", \"Lauer\", , \"alexandralauer1@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-4191-6301\")), person(\"Romain\", \"François\", , \"romain@tada.science\", role = \"aut\"), person(\"JooYoung\", \"Seo\", , \"jseo1005@illinois.edu\", role = \"aut\", comment = c(ORCID = \"0000-0002-4064-6012\")), person(\"Ken\", \"Brevoort\", , \"ken@brevoort.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-4001-8358\")), person(\"Olivier\", \"Roy\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Build display tables from tabular data with an easy-to-use set of functions. With its progressive approach, we can construct display tables with a cohesive set of table parts. Table values can be formatted using any of the included formatting functions. Footnotes and cell styles can be precisely added through a location targeting system. The way in which 'gt' handles things for you means that you don't often have to worry about the fine details.", + "License": "MIT + file LICENSE", + "URL": "https://gt.rstudio.com, https://github.com/rstudio/gt", + "BugReports": "https://github.com/rstudio/gt/issues", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "base64enc (>= 0.1-3)", + "bigD (>= 0.2)", + "bitops (>= 1.0-7)", + "cli (>= 3.6.3)", + "commonmark (>= 1.9.1)", + "dplyr (>= 1.1.4)", + "fs (>= 1.6.4)", + "glue (>= 1.8.0)", + "htmltools (>= 0.5.8.1)", + "htmlwidgets (>= 1.6.4)", + "juicyjuice (>= 0.1.0)", + "magrittr (>= 2.0.3)", + "markdown (>= 1.13)", + "reactable (>= 0.4.4)", + "rlang (>= 1.1.4)", + "sass (>= 0.4.9)", + "scales (>= 1.3.0)", + "tidyselect (>= 1.2.1)", + "vctrs", + "xml2 (>= 1.3.6)" + ], + "Suggests": [ + "farver", + "fontawesome (>= 0.5.2)", + "ggplot2", + "grid", + "gtable (>= 0.3.6)", + "katex (>= 1.4.1)", + "knitr", + "lubridate", + "magick", + "paletteer", + "RColorBrewer", + "rmarkdown (>= 2.20)", + "rsvg", + "rvest", + "shiny (>= 1.9.1)", + "testthat (>= 3.1.9)", + "tidyr (>= 1.0.0)", + "webshot2 (>= 0.1.0)", + "withr" + ], + "Config/Needs/coverage": "officer", + "Config/Needs/website": "quarto", + "ByteCompile": "true", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Richard Iannone [aut, cre] (ORCID: ), Joe Cheng [aut], Barret Schloerke [aut] (ORCID: ), Shannon Haughton [aut], Ellis Hughes [aut] (ORCID: ), Alexandra Lauer [aut] (ORCID: ), Romain François [aut], JooYoung Seo [aut] (ORCID: ), Ken Brevoort [aut] (ORCID: ), Olivier Roy [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Richard Iannone ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "gtable": { + "Package": "gtable", + "Version": "0.3.6", + "Source": "Repository", + "Title": "Arrange 'Grobs' in Tables", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Tools to make it easier to work with \"tables\" of 'grobs'. The 'gtable' package defines a 'gtable' grob class that specifies a grid along with a list of grobs and their placement in the grid. Further the package makes it easy to manipulate and combine 'gtable' objects so that complex compositions can be built up sequentially.", + "License": "MIT + file LICENSE", + "URL": "https://gtable.r-lib.org, https://github.com/r-lib/gtable", + "BugReports": "https://github.com/r-lib/gtable/issues", + "Depends": [ + "R (>= 4.0)" + ], + "Imports": [ + "cli", + "glue", + "grid", + "lifecycle", + "rlang (>= 1.1.0)", + "stats" + ], + "Suggests": [ + "covr", + "ggplot2", + "knitr", + "profvis", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2024-10-25", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut], Thomas Lin Pedersen [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "RSPM" + }, + "hardhat": { + "Package": "hardhat", + "Version": "1.4.2", + "Source": "Repository", + "Title": "Construct Modeling Packages", + "Authors@R": "c( person(\"Hannah\", \"Frick\", , \"hannah@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6049-5258\")), person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = \"aut\"), person(\"Max\", \"Kuhn\", , \"max@posit.co\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Building modeling packages is hard. A large amount of effort generally goes into providing an implementation for a new method that is efficient, fast, and correct, but often less emphasis is put on the user interface. A good interface requires specialized knowledge about S3 methods and formulas, which the average package developer might not have. The goal of 'hardhat' is to reduce the burden around building new modeling packages by providing functionality for preprocessing, predicting, and validating input.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/tidymodels/hardhat, https://hardhat.tidymodels.org", + "BugReports": "https://github.com/tidymodels/hardhat/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.6.0)", + "glue (>= 1.6.2)", + "rlang (>= 1.1.0)", + "sparsevctrs (>= 0.2.0)", + "tibble (>= 3.2.1)", + "vctrs (>= 0.6.0)" + ], + "Suggests": [ + "covr", + "crayon", + "devtools", + "knitr", + "Matrix", + "modeldata (>= 0.0.2)", + "recipes (>= 1.0.5)", + "rmarkdown (>= 2.3)", + "roxygen2", + "testthat (>= 3.0.0)", + "usethis (>= 2.1.5)", + "withr (>= 3.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-23", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hannah Frick [aut, cre] (ORCID: ), Davis Vaughan [aut], Max Kuhn [aut], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hannah Frick ", + "Repository": "RSPM" + }, + "haven": { + "Package": "haven", + "Version": "2.5.5", + "Source": "Repository", + "Title": "Import and Export 'SPSS', 'Stata' and 'SAS' Files", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Evan\", \"Miller\", role = c(\"aut\", \"cph\"), comment = \"Author of included ReadStat code\"), person(\"Danny\", \"Smith\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Import foreign statistical formats into R via the embedded 'ReadStat' C library, .", + "License": "MIT + file LICENSE", + "URL": "https://haven.tidyverse.org, https://github.com/tidyverse/haven, https://github.com/WizardMac/ReadStat", + "BugReports": "https://github.com/tidyverse/haven/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cli (>= 3.0.0)", + "forcats (>= 0.2.0)", + "hms", + "lifecycle", + "methods", + "readr (>= 0.1.0)", + "rlang (>= 0.4.0)", + "tibble", + "tidyselect", + "vctrs (>= 0.3.0)" + ], + "Suggests": [ + "covr", + "crayon", + "fs", + "knitr", + "pillar (>= 1.4.0)", + "rmarkdown", + "testthat (>= 3.0.0)", + "utf8" + ], + "LinkingTo": [ + "cpp11" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "GNU make, zlib: zlib1g-dev (deb), zlib-devel (rpm)", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre], Evan Miller [aut, cph] (Author of included ReadStat code), Danny Smith [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "RSPM" + }, + "here": { + "Package": "here", + "Version": "1.0.2", + "Source": "Repository", + "Title": "A Simpler Way to Find Your Files", + "Date": "2025-09-06", + "Authors@R": "c(person(given = \"Kirill\", family = \"M\\u00fcller\", role = c(\"aut\", \"cre\"), email = \"kirill@cynkra.com\", comment = c(ORCID = \"0000-0002-1416-3412\")), person(given = \"Jennifer\", family = \"Bryan\", role = \"ctb\", email = \"jenny@rstudio.com\", comment = c(ORCID = \"0000-0002-6983-2759\")))", + "Description": "Constructs paths to your project's files. Declare the relative path of a file within your project with 'i_am()'. Use the 'here()' function as a drop-in replacement for 'file.path()', it will always locate the files relative to your project root.", + "License": "MIT + file LICENSE", + "URL": "https://here.r-lib.org/, https://github.com/r-lib/here", + "BugReports": "https://github.com/r-lib/here/issues", + "Imports": [ + "rprojroot (>= 2.1.0)" + ], + "Suggests": [ + "conflicted", + "covr", + "fs", + "knitr", + "palmerpenguins", + "plyr", + "readr", + "rlang", + "rmarkdown", + "testthat", + "uuid", + "withr" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "Config/testthat/edition": "3", + "Config/Needs/website": "tidyverse/tidytemplate", + "NeedsCompilation": "no", + "Author": "Kirill Müller [aut, cre] (ORCID: ), Jennifer Bryan [ctb] (ORCID: )", + "Maintainer": "Kirill Müller ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "highr": { + "Package": "highr", + "Version": "0.11", + "Source": "Repository", + "Type": "Package", + "Title": "Syntax Highlighting for R Source Code", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Yixuan\", \"Qiu\", role = \"aut\"), person(\"Christopher\", \"Gandrud\", role = \"ctb\"), person(\"Qiang\", \"Li\", role = \"ctb\") )", + "Description": "Provides syntax highlighting for R source code. Currently it supports LaTeX and HTML output. Source code of other languages is supported via Andre Simon's highlight package ().", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "xfun (>= 0.18)" + ], + "Suggests": [ + "knitr", + "markdown", + "testit" + ], + "License": "GPL", + "URL": "https://github.com/yihui/highr", + "BugReports": "https://github.com/yihui/highr/issues", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre] (), Yixuan Qiu [aut], Christopher Gandrud [ctb], Qiang Li [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "hms": { + "Package": "hms", + "Version": "1.1.4", + "Source": "Repository", + "Title": "Pretty Time of Day", + "Date": "2025-10-11", + "Authors@R": "c( person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"R Consortium\", role = \"fnd\"), person(\"Posit Software, PBC\", role = \"fnd\", comment = c(ROR = \"03wc8by49\")) )", + "Description": "Implements an S3 class for storing and formatting time-of-day values, based on the 'difftime' class.", + "License": "MIT + file LICENSE", + "URL": "https://hms.tidyverse.org/, https://github.com/tidyverse/hms", + "BugReports": "https://github.com/tidyverse/hms/issues", + "Imports": [ + "cli", + "lifecycle", + "methods", + "pkgconfig", + "rlang (>= 1.0.2)", + "vctrs (>= 0.3.8)" + ], + "Suggests": [ + "crayon", + "lubridate", + "pillar (>= 1.1.0)", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "NeedsCompilation": "no", + "Author": "Kirill Müller [aut, cre] (ORCID: ), R Consortium [fnd], Posit Software, PBC [fnd] (ROR: )", + "Maintainer": "Kirill Müller ", + "Repository": "RSPM" + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.9", + "Source": "Repository", + "Type": "Package", + "Title": "Tools for HTML", + "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Barret\", \"Schloerke\", , \"barret@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Yihui\", \"Xie\", , \"yihui@posit.co\", role = \"aut\"), person(\"Jeff\", \"Allen\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Tools for HTML generation and output.", + "License": "GPL (>= 2)", + "URL": "https://github.com/rstudio/htmltools, https://rstudio.github.io/htmltools/", + "BugReports": "https://github.com/rstudio/htmltools/issues", + "Depends": [ + "R (>= 2.14.1)" + ], + "Imports": [ + "base64enc", + "digest", + "fastmap (>= 1.1.0)", + "grDevices", + "rlang (>= 1.0.0)", + "utils" + ], + "Suggests": [ + "Cairo", + "markdown", + "ragg", + "shiny", + "testthat", + "withr" + ], + "Enhances": [ + "knitr" + ], + "Config/Needs/check": "knitr", + "Config/Needs/website": "rstudio/quillt, bench", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Collate": "'colors.R' 'fill.R' 'html_dependency.R' 'html_escape.R' 'html_print.R' 'htmltools-package.R' 'images.R' 'known_tags.R' 'selector.R' 'staticimports.R' 'tag_query.R' 'utils.R' 'tags.R' 'template.R'", + "NeedsCompilation": "yes", + "Author": "Joe Cheng [aut], Carson Sievert [aut, cre] (ORCID: ), Barret Schloerke [aut] (ORCID: ), Winston Chang [aut] (ORCID: ), Yihui Xie [aut], Jeff Allen [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Carson Sievert ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.6.4", + "Source": "Repository", + "Type": "Package", + "Title": "HTML Widgets for R", + "Authors@R": "c( person(\"Ramnath\", \"Vaidyanathan\", role = c(\"aut\", \"cph\")), person(\"Yihui\", \"Xie\", role = \"aut\"), person(\"JJ\", \"Allaire\", role = \"aut\"), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Kenton\", \"Russell\", role = c(\"aut\", \"cph\")), person(\"Ellis\", \"Hughes\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A framework for creating HTML widgets that render in various contexts including the R console, 'R Markdown' documents, and 'Shiny' web applications.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/ramnathv/htmlwidgets", + "BugReports": "https://github.com/ramnathv/htmlwidgets/issues", + "Imports": [ + "grDevices", + "htmltools (>= 0.5.7)", + "jsonlite (>= 0.9.16)", + "knitr (>= 1.8)", + "rmarkdown", + "yaml" + ], + "Suggests": [ + "testthat" + ], + "Enhances": [ + "shiny (>= 1.1)" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Ramnath Vaidyanathan [aut, cph], Yihui Xie [aut], JJ Allaire [aut], Joe Cheng [aut], Carson Sievert [aut, cre] (), Kenton Russell [aut, cph], Ellis Hughes [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Carson Sievert ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "httr": { + "Package": "httr", + "Version": "1.4.7", + "Source": "Repository", + "Title": "Tools for Working with URLs and HTTP", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Useful tools for working with HTTP organised by HTTP verbs (GET(), POST(), etc). Configuration functions make it easy to control additional request components (authenticate(), add_headers() and so on).", + "License": "MIT + file LICENSE", + "URL": "https://httr.r-lib.org/, https://github.com/r-lib/httr", + "BugReports": "https://github.com/r-lib/httr/issues", + "Depends": [ + "R (>= 3.5)" + ], + "Imports": [ + "curl (>= 5.0.2)", + "jsonlite", + "mime", + "openssl (>= 0.8)", + "R6" + ], + "Suggests": [ + "covr", + "httpuv", + "jpeg", + "knitr", + "png", + "readr", + "rmarkdown", + "testthat (>= 0.8.0)", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Posit, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "ids": { + "Package": "ids", + "Version": "1.0.1", + "Source": "Repository", + "Title": "Generate Random Identifiers", + "Authors@R": "person(\"Rich\", \"FitzJohn\", role = c(\"aut\", \"cre\"), email = \"rich.fitzjohn@gmail.com\")", + "Description": "Generate random or human readable and pronounceable identifiers.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/richfitz/ids", + "BugReports": "https://github.com/richfitz/ids/issues", + "Imports": [ + "openssl", + "uuid" + ], + "Suggests": [ + "knitr", + "rcorpora", + "rmarkdown", + "testthat" + ], + "RoxygenNote": "6.0.1", + "VignetteBuilder": "knitr", + "NeedsCompilation": "no", + "Author": "Rich FitzJohn [aut, cre]", + "Maintainer": "Rich FitzJohn ", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "igraph": { + "Package": "igraph", + "Version": "2.2.1", + "Source": "Repository", + "Title": "Network Analysis and Visualization", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0001-7098-9676\")), person(\"Tamás\", \"Nepusz\", , \"ntamas@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-1451-338X\")), person(\"Vincent\", \"Traag\", role = \"aut\", comment = c(ORCID = \"0000-0003-3170-3879\")), person(\"Szabolcs\", \"Horvát\", , \"szhorvat@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-3100-523X\")), person(\"Fabio\", \"Zanini\", , \"fabio.zanini@unsw.edu.au\", role = \"aut\", comment = c(ORCID = \"0000-0001-7097-8539\")), person(\"Daniel\", \"Noom\", role = \"aut\"), person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"Michael\", \"Antonov\", role = \"ctb\"), person(\"Chan Zuckerberg Initiative\", role = \"fnd\", comment = c(ROR = \"02qenvm24\")), person(\"David\", \"Schoch\", , \"david.schoch@cynkra.com\", role = \"aut\", comment = c(ORCID = \"0000-0003-2952-4812\")), person(\"Maëlle\", \"Salmon\", , \"maelle@cynkra.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-2815-0399\")) )", + "Description": "Routines for simple graphs and network analysis. It can handle large graphs very well and provides functions for generating random and regular graphs, graph visualization, centrality methods and much more.", + "License": "GPL (>= 2)", + "URL": "https://r.igraph.org/, https://igraph.org/, https://igraph.discourse.group/", + "BugReports": "https://github.com/igraph/rigraph/issues", + "Depends": [ + "methods", + "R (>= 3.5.0)" + ], + "Imports": [ + "cli", + "graphics", + "grDevices", + "lifecycle", + "magrittr", + "Matrix", + "pkgconfig (>= 2.0.0)", + "rlang (>= 1.1.0)", + "stats", + "utils", + "vctrs" + ], + "Suggests": [ + "ape (>= 5.7-0.1)", + "callr", + "decor", + "digest", + "igraphdata", + "knitr", + "rgl (>= 1.3.14)", + "rmarkdown", + "scales", + "stats4", + "tcltk", + "testthat", + "vdiffr", + "withr" + ], + "Enhances": [ + "graph" + ], + "LinkingTo": [ + "cpp11 (>= 0.5.0)" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "false", + "Config/build/never-clean": "true", + "Config/comment/compilation-database": "Generate manually with pkgload:::generate_db() for faster pkgload::load_all()", + "Config/Needs/build": "r-lib/roxygen2, devtools, irlba, pkgconfig, igraph/igraph.r2cdocs, moodymudskipper/devtag", + "Config/Needs/coverage": "covr", + "Config/Needs/website": "here, readr, tibble, xmlparsedata, xml2", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "aaa-auto, vs-es, scan, vs-operators, weakref, watts.strogatz.game", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "SystemRequirements": "libxml2 (optional), glpk (>= 4.57, optional)", + "NeedsCompilation": "yes", + "Author": "Gábor Csárdi [aut] (ORCID: ), Tamás Nepusz [aut] (ORCID: ), Vincent Traag [aut] (ORCID: ), Szabolcs Horvát [aut] (ORCID: ), Fabio Zanini [aut] (ORCID: ), Daniel Noom [aut], Kirill Müller [aut, cre] (ORCID: ), Michael Antonov [ctb], Chan Zuckerberg Initiative [fnd] (ROR: ), David Schoch [aut] (ORCID: ), Maëlle Salmon [aut] (ORCID: )", + "Maintainer": "Kirill Müller ", + "Repository": "RSPM" + }, + "infer": { + "Package": "infer", + "Version": "1.1.0", + "Source": "Repository", + "Type": "Package", + "Title": "Tidy Statistical Inference", + "Authors@R": "c( person(\"Andrew\", \"Bray\", , \"abray@reed.edu\", role = \"aut\"), person(\"Chester\", \"Ismay\", , \"chester.ismay@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0003-2820-2547\")), person(\"Evgeni\", \"Chasnovski\", , \"evgeni.chasnovski@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-1617-4019\")), person(\"Simon\", \"Couch\", , \"simon.couch@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0001-5676-5107\")), person(\"Ben\", \"Baumer\", , \"ben.baumer@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-3279-0516\")), person(\"Mine\", \"Cetinkaya-Rundel\", , \"mine@stat.duke.edu\", role = \"aut\", comment = c(ORCID = \"0000-0001-6452-2420\")), person(\"Ted\", \"Laderas\", , \"tedladeras@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-6207-7068\")), person(\"Nick\", \"Solomon\", , \"nick.solomon@datacamp.com\", role = \"ctb\"), person(\"Johanna\", \"Hardin\", , \"Jo.Hardin@pomona.edu\", role = \"ctb\"), person(\"Albert Y.\", \"Kim\", , \"albert.ys.kim@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0001-7824-306X\")), person(\"Neal\", \"Fultz\", , \"nfultz@gmail.com\", role = \"ctb\"), person(\"Doug\", \"Friedman\", , \"doug.nhp@gmail.com\", role = \"ctb\"), person(\"Richie\", \"Cotton\", , \"richie@datacamp.com\", role = \"ctb\", comment = c(ORCID = \"0000-0003-2504-802X\")), person(\"Brian\", \"Fannin\", , \"captain@pirategrunt.com\", role = \"ctb\") )", + "Description": "The objective of this package is to perform inference using an expressive statistical grammar that coheres with the tidy design framework.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/tidymodels/infer, https://infer.tidymodels.org/", + "BugReports": "https://github.com/tidymodels/infer/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "broom", + "cli", + "dplyr (>= 0.7.0)", + "generics", + "ggplot2 (>= 3.5.2)", + "glue (>= 1.3.0)", + "grDevices", + "lifecycle", + "magrittr", + "methods", + "patchwork", + "purrr", + "rlang (>= 0.2.0)", + "tibble", + "tidyr", + "vctrs (>= 0.6.5)", + "withr" + ], + "Suggests": [ + "covr", + "devtools (>= 1.12.0)", + "fs", + "knitr", + "nycflights13", + "parsnip", + "rmarkdown", + "stringr", + "testthat (>= 3.0.0)", + "vdiffr (>= 1.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-25", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Andrew Bray [aut], Chester Ismay [aut] (ORCID: ), Evgeni Chasnovski [aut] (ORCID: ), Simon Couch [aut, cre] (ORCID: ), Ben Baumer [aut] (ORCID: ), Mine Cetinkaya-Rundel [aut] (ORCID: ), Ted Laderas [ctb] (ORCID: ), Nick Solomon [ctb], Johanna Hardin [ctb], Albert Y. Kim [ctb] (ORCID: ), Neal Fultz [ctb], Doug Friedman [ctb], Richie Cotton [ctb] (ORCID: ), Brian Fannin [ctb]", + "Maintainer": "Simon Couch ", + "Repository": "RSPM" + }, + "ipred": { + "Package": "ipred", + "Version": "0.9-15", + "Source": "Repository", + "Title": "Improved Predictors", + "Date": "2024-07-18", + "Authors@R": "c(person(\"Andrea\", \"Peters\", role = \"aut\"), person(\"Torsten\", \"Hothorn\", role = c(\"aut\", \"cre\"), email = \"Torsten.Hothorn@R-project.org\"), person(\"Brian D.\", \"Ripley\", role = \"ctb\"), person(\"Terry\", \"Therneau\", role = \"ctb\"), person(\"Beth\", \"Atkinson\", role = \"ctb\"))", + "Description": "Improved predictive models by indirect classification and bagging for classification, regression and survival problems as well as resampling based estimators of prediction error.", + "Depends": [ + "R (>= 2.10)" + ], + "Imports": [ + "rpart (>= 3.1-8)", + "MASS", + "survival", + "nnet", + "class", + "prodlim" + ], + "Suggests": [ + "mvtnorm", + "mlbench", + "TH.data", + "randomForest", + "party" + ], + "License": "GPL (>= 2)", + "NeedsCompilation": "yes", + "Author": "Andrea Peters [aut], Torsten Hothorn [aut, cre], Brian D. Ripley [ctb], Terry Therneau [ctb], Beth Atkinson [ctb]", + "Maintainer": "Torsten Hothorn ", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "isoband": { + "Package": "isoband", + "Version": "0.3.0", + "Source": "Repository", + "Title": "Generate Isolines and Isobands from Regularly Spaced Elevation Grids", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Claus O.\", \"Wilke\", , \"wilke@austin.utexas.edu\", role = \"aut\", comment = c(\"Original author\", ORCID = \"0000-0002-7470-9261\")), person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "A fast C++ implementation to generate contour lines (isolines) and contour polygons (isobands) from regularly spaced grids containing elevation data.", + "License": "MIT + file LICENSE", + "URL": "https://isoband.r-lib.org, https://github.com/r-lib/isoband", + "BugReports": "https://github.com/r-lib/isoband/issues", + "Imports": [ + "cli", + "grid", + "rlang", + "utils" + ], + "Suggests": [ + "covr", + "ggplot2", + "knitr", + "magick", + "bench", + "rmarkdown", + "sf", + "testthat (>= 3.0.0)", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-12-05", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Config/build/compilation-database": "true", + "LinkingTo": [ + "cpp11" + ], + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut] (ORCID: ), Claus O. Wilke [aut] (Original author, ORCID: ), Thomas Lin Pedersen [aut, cre] (ORCID: ), Posit, PBC [cph, fnd] (ROR: )", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "RSPM" + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.14", + "Source": "Repository", + "Type": "Package", + "Title": "Provides Iterator Construct", + "Authors@R": "c(person(\"Folashade\", \"Daniel\", role=\"cre\", email=\"fdaniel@microsoft.com\"), person(\"Revolution\", \"Analytics\", role=c(\"aut\", \"cph\")), person(\"Steve\", \"Weston\", role=\"aut\"))", + "Description": "Support for iterators, which allow a programmer to traverse through all the elements of a vector, list, or other collection of data.", + "URL": "https://github.com/RevolutionAnalytics/iterators", + "Depends": [ + "R (>= 2.5.0)", + "utils" + ], + "Suggests": [ + "RUnit", + "foreach" + ], + "License": "Apache License (== 2.0)", + "NeedsCompilation": "no", + "Author": "Folashade Daniel [cre], Revolution Analytics [aut, cph], Steve Weston [aut]", + "Maintainer": "Folashade Daniel ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "jpeg": { + "Package": "jpeg", + "Version": "0.1-11", + "Source": "Repository", + "Title": "Read and write JPEG images", + "Author": "Simon Urbanek [aut, cre, cph] (https://urbanek.org, )", + "Authors@R": "person(\"Simon\", \"Urbanek\", role=c(\"aut\",\"cre\",\"cph\"), email=\"Simon.Urbanek@r-project.org\", comment=c(\"https://urbanek.org\", ORCID=\"0000-0003-2297-1732\"))", + "Maintainer": "Simon Urbanek ", + "Depends": [ + "R (>= 2.9.0)" + ], + "Description": "This package provides an easy and simple way to read, write and display bitmap images stored in the JPEG format. It can read and write both files and in-memory raw vectors.", + "License": "GPL-2 | GPL-3", + "SystemRequirements": "libjpeg", + "URL": "https://www.rforge.net/jpeg/", + "BugReports": "https://github.com/s-u/jpeg/issues", + "NeedsCompilation": "yes", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "jquerylib": { + "Package": "jquerylib", + "Version": "0.1.4", + "Source": "Repository", + "Title": "Obtain 'jQuery' as an HTML Dependency Object", + "Authors@R": "c( person(\"Carson\", \"Sievert\", role = c(\"aut\", \"cre\"), email = \"carson@rstudio.com\", comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Joe\", \"Cheng\", role = \"aut\", email = \"joe@rstudio.com\"), person(family = \"RStudio\", role = \"cph\"), person(family = \"jQuery Foundation\", role = \"cph\", comment = \"jQuery library and jQuery UI library\"), person(family = \"jQuery contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery library; authors listed in inst/lib/jquery-AUTHORS.txt\") )", + "Description": "Obtain any major version of 'jQuery' () and use it in any webpage generated by 'htmltools' (e.g. 'shiny', 'htmlwidgets', and 'rmarkdown'). Most R users don't need to use this package directly, but other R packages (e.g. 'shiny', 'rmarkdown', etc.) depend on this package to avoid bundling redundant copies of 'jQuery'.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Config/testthat/edition": "3", + "RoxygenNote": "7.0.2", + "Imports": [ + "htmltools" + ], + "Suggests": [ + "testthat" + ], + "NeedsCompilation": "no", + "Author": "Carson Sievert [aut, cre] (), Joe Cheng [aut], RStudio [cph], jQuery Foundation [cph] (jQuery library and jQuery UI library), jQuery contributors [ctb, cph] (jQuery library; authors listed in inst/lib/jquery-AUTHORS.txt)", + "Maintainer": "Carson Sievert ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "jsonify": { + "Package": "jsonify", + "Version": "1.2.3", + "Source": "Repository", + "Type": "Package", + "Title": "Convert Between 'R' Objects and Javascript Object Notation (JSON)", + "Date": "2025-11-24", + "Authors@R": "c( person(\"David\", \"Cooley\", ,\"dcooley@symbolix.com.au\", role = c(\"aut\", \"cre\")), person(\"Chris\", \"Muir\", role = \"ctb\"), person(\"Brendan\", \"Knapp\", role = \"ctb\", comment = c(ORCID = \"0000-0003-3284-4972\")) )", + "Description": "Conversions between 'R' objects and Javascript Object Notation (JSON) using the 'rapidjsonr' library .", + "License": "MIT + file LICENSE", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "Rcpp (>= 1.1.0)" + ], + "LinkingTo": [ + "rapidjsonr (>= 1.2.1)", + "Rcpp" + ], + "RoxygenNote": "7.3.2", + "Suggests": [ + "covr", + "testthat", + "knitr", + "rmarkdown" + ], + "Encoding": "UTF-8", + "URL": "https://symbolixau.github.io/jsonify/, https://github.com/SymbolixAU/jsonify", + "BugReports": "https://github.com/SymbolixAU/jsonify/issues", + "NeedsCompilation": "yes", + "Author": "David Cooley [aut, cre], Chris Muir [ctb], Brendan Knapp [ctb] (ORCID: )", + "Maintainer": "David Cooley ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "2.0.0", + "Source": "Repository", + "Title": "A Simple and Robust JSON Parser and Generator for R", + "License": "MIT + file LICENSE", + "Depends": [ + "methods" + ], + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Duncan\", \"Temple Lang\", role = \"ctb\"), person(\"Lloyd\", \"Hilaiel\", role = \"cph\", comment=\"author of bundled libyajl\"))", + "URL": "https://jeroen.r-universe.dev/jsonlite https://arxiv.org/abs/1403.2805", + "BugReports": "https://github.com/jeroen/jsonlite/issues", + "Maintainer": "Jeroen Ooms ", + "VignetteBuilder": "knitr, R.rsp", + "Description": "A reasonably fast JSON parser and generator, optimized for statistical data and the web. Offers simple, flexible tools for working with JSON in R, and is particularly powerful for building pipelines and interacting with a web API. The implementation is based on the mapping described in the vignette (Ooms, 2014). In addition to converting JSON data from/to R objects, 'jsonlite' contains functions to stream, validate, and prettify JSON data. The unit tests included with the package verify that all edge cases are encoded and decoded consistently for use with dynamic data in systems and applications.", + "Suggests": [ + "httr", + "vctrs", + "testthat", + "knitr", + "rmarkdown", + "R.rsp", + "sf" + ], + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (), Duncan Temple Lang [ctb], Lloyd Hilaiel [cph] (author of bundled libyajl)", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "juicyjuice": { + "Package": "juicyjuice", + "Version": "0.1.0", + "Source": "Repository", + "Title": "Inline CSS Properties into HTML Tags Using 'juice'", + "Authors@R": "c( person(\"Richard\", \"Iannone\", , \"riannone@me.com\", c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"Automattic\", role = c(\"cph\"), comment = \"juice library\"), person(\"juice contributors\", role = c(\"ctb\"), comment = \"juice library\") )", + "Description": "There are occasions where you need a piece of HTML with integrated styles. A prime example of this is HTML email. This transformation involves moving the CSS and associated formatting instructions from the style block in the head of your document into the body of the HTML. Many prominent email clients require integrated styles in HTML email; otherwise a received HTML email will be displayed without any styling. This package will quickly and precisely perform these CSS transformations when given HTML text and it does so by using the JavaScript 'juice' library.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/rich-iannone/juicyjuice", + "BugReports": "https://github.com/rich-iannone/juicyjuice/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.1", + "Imports": [ + "V8 (>= 4.2.0)" + ], + "Suggests": [ + "testthat (>= 3.0.0)" + ], + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Richard Iannone [aut, cre, cph] (), Automattic [cph] (juice library), juice contributors [ctb] (juice library)", + "Maintainer": "Richard Iannone ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "knitr": { + "Package": "knitr", + "Version": "1.51", + "Source": "Repository", + "Type": "Package", + "Title": "A General-Purpose Package for Dynamic Report Generation in R", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")), person(\"Abhraneel\", \"Sarma\", role = \"ctb\"), person(\"Adam\", \"Vogt\", role = \"ctb\"), person(\"Alastair\", \"Andrew\", role = \"ctb\"), person(\"Alex\", \"Zvoleff\", role = \"ctb\"), person(\"Amar\", \"Al-Zubaidi\", role = \"ctb\"), person(\"Andre\", \"Simon\", role = \"ctb\", comment = \"the CSS files under inst/themes/ were derived from the Highlight package http://www.andre-simon.de\"), person(\"Aron\", \"Atkins\", role = \"ctb\"), person(\"Aaron\", \"Wolen\", role = \"ctb\"), person(\"Ashley\", \"Manton\", role = \"ctb\"), person(\"Atsushi\", \"Yasumoto\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8335-495X\")), person(\"Ben\", \"Baumer\", role = \"ctb\"), person(\"Brian\", \"Diggs\", role = \"ctb\"), person(\"Brian\", \"Zhang\", role = \"ctb\"), person(\"Bulat\", \"Yapparov\", role = \"ctb\"), person(\"Cassio\", \"Pereira\", role = \"ctb\"), person(\"Christophe\", \"Dervieux\", role = \"ctb\"), person(\"David\", \"Hall\", role = \"ctb\"), person(\"David\", \"Hugh-Jones\", role = \"ctb\"), person(\"David\", \"Robinson\", role = \"ctb\"), person(\"Doug\", \"Hemken\", role = \"ctb\"), person(\"Duncan\", \"Murdoch\", role = \"ctb\"), person(\"Elio\", \"Campitelli\", role = \"ctb\"), person(\"Ellis\", \"Hughes\", role = \"ctb\"), person(\"Emily\", \"Riederer\", role = \"ctb\"), person(\"Fabian\", \"Hirschmann\", role = \"ctb\"), person(\"Fitch\", \"Simeon\", role = \"ctb\"), person(\"Forest\", \"Fang\", role = \"ctb\"), person(c(\"Frank\", \"E\", \"Harrell\", \"Jr\"), role = \"ctb\", comment = \"the Sweavel package at inst/misc/Sweavel.sty\"), person(\"Garrick\", \"Aden-Buie\", role = \"ctb\"), person(\"Gregoire\", \"Detrez\", role = \"ctb\"), person(\"Hadley\", \"Wickham\", role = \"ctb\"), person(\"Hao\", \"Zhu\", role = \"ctb\"), person(\"Heewon\", \"Jeon\", role = \"ctb\"), person(\"Henrik\", \"Bengtsson\", role = \"ctb\"), person(\"Hiroaki\", \"Yutani\", role = \"ctb\"), person(\"Ian\", \"Lyttle\", role = \"ctb\"), person(\"Hodges\", \"Daniel\", role = \"ctb\"), person(\"Jacob\", \"Bien\", role = \"ctb\"), person(\"Jake\", \"Burkhead\", role = \"ctb\"), person(\"James\", \"Manton\", role = \"ctb\"), person(\"Jared\", \"Lander\", role = \"ctb\"), person(\"Jason\", \"Punyon\", role = \"ctb\"), person(\"Javier\", \"Luraschi\", role = \"ctb\"), person(\"Jeff\", \"Arnold\", role = \"ctb\"), person(\"Jenny\", \"Bryan\", role = \"ctb\"), person(\"Jeremy\", \"Ashkenas\", role = c(\"ctb\", \"cph\"), comment = \"the CSS file at inst/misc/docco-classic.css\"), person(\"Jeremy\", \"Stephens\", role = \"ctb\"), person(\"Jim\", \"Hester\", role = \"ctb\"), person(\"Joe\", \"Cheng\", role = \"ctb\"), person(\"Johannes\", \"Ranke\", role = \"ctb\"), person(\"John\", \"Honaker\", role = \"ctb\"), person(\"John\", \"Muschelli\", role = \"ctb\"), person(\"Jonathan\", \"Keane\", role = \"ctb\"), person(\"JJ\", \"Allaire\", role = \"ctb\"), person(\"Johan\", \"Toloe\", role = \"ctb\"), person(\"Jonathan\", \"Sidi\", role = \"ctb\"), person(\"Joseph\", \"Larmarange\", role = \"ctb\"), person(\"Julien\", \"Barnier\", role = \"ctb\"), person(\"Kaiyin\", \"Zhong\", role = \"ctb\"), person(\"Kamil\", \"Slowikowski\", role = \"ctb\"), person(\"Karl\", \"Forner\", role = \"ctb\"), person(c(\"Kevin\", \"K.\"), \"Smith\", role = \"ctb\"), person(\"Kirill\", \"Mueller\", role = \"ctb\"), person(\"Kohske\", \"Takahashi\", role = \"ctb\"), person(\"Lorenz\", \"Walthert\", role = \"ctb\"), person(\"Lucas\", \"Gallindo\", role = \"ctb\"), person(\"Marius\", \"Hofert\", role = \"ctb\"), person(\"Martin\", \"Modrák\", role = \"ctb\"), person(\"Michael\", \"Chirico\", role = \"ctb\"), person(\"Michael\", \"Friendly\", role = \"ctb\"), person(\"Michal\", \"Bojanowski\", role = \"ctb\"), person(\"Michel\", \"Kuhlmann\", role = \"ctb\"), person(\"Miller\", \"Patrick\", role = \"ctb\"), person(\"Nacho\", \"Caballero\", role = \"ctb\"), person(\"Nick\", \"Salkowski\", role = \"ctb\"), person(\"Niels Richard\", \"Hansen\", role = \"ctb\"), person(\"Noam\", \"Ross\", role = \"ctb\"), person(\"Obada\", \"Mahdi\", role = \"ctb\"), person(\"Pavel N.\", \"Krivitsky\", role = \"ctb\", comment=c(ORCID = \"0000-0002-9101-3362\")), person(\"Pedro\", \"Faria\", role = \"ctb\"), person(\"Qiang\", \"Li\", role = \"ctb\"), person(\"Ramnath\", \"Vaidyanathan\", role = \"ctb\"), person(\"Richard\", \"Cotton\", role = \"ctb\"), person(\"Robert\", \"Krzyzanowski\", role = \"ctb\"), person(\"Rodrigo\", \"Copetti\", role = \"ctb\"), person(\"Romain\", \"Francois\", role = \"ctb\"), person(\"Ruaridh\", \"Williamson\", role = \"ctb\"), person(\"Sagiru\", \"Mati\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1413-3974\")), person(\"Scott\", \"Kostyshak\", role = \"ctb\"), person(\"Sebastian\", \"Meyer\", role = \"ctb\"), person(\"Sietse\", \"Brouwer\", role = \"ctb\"), person(c(\"Simon\", \"de\"), \"Bernard\", role = \"ctb\"), person(\"Sylvain\", \"Rousseau\", role = \"ctb\"), person(\"Taiyun\", \"Wei\", role = \"ctb\"), person(\"Thibaut\", \"Assus\", role = \"ctb\"), person(\"Thibaut\", \"Lamadon\", role = \"ctb\"), person(\"Thomas\", \"Leeper\", role = \"ctb\"), person(\"Tim\", \"Mastny\", role = \"ctb\"), person(\"Tom\", \"Torsney-Weir\", role = \"ctb\"), person(\"Trevor\", \"Davis\", role = \"ctb\"), person(\"Viktoras\", \"Veitas\", role = \"ctb\"), person(\"Weicheng\", \"Zhu\", role = \"ctb\"), person(\"Wush\", \"Wu\", role = \"ctb\"), person(\"Zachary\", \"Foster\", role = \"ctb\"), person(\"Zhian N.\", \"Kamvar\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1458-7108\")), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides a general-purpose tool for dynamic report generation in R using Literate Programming techniques.", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "evaluate (>= 0.15)", + "highr (>= 0.11)", + "methods", + "tools", + "xfun (>= 0.52)", + "yaml (>= 2.1.19)" + ], + "Suggests": [ + "bslib", + "DBI (>= 0.4-1)", + "digest", + "formatR", + "gifski", + "gridSVG", + "htmlwidgets (>= 0.7)", + "jpeg", + "JuliaCall (>= 0.11.1)", + "magick", + "litedown", + "markdown (>= 1.3)", + "otel", + "otelsdk", + "png", + "ragg", + "reticulate (>= 1.4)", + "rgl (>= 0.95.1201)", + "rlang", + "rmarkdown", + "sass", + "showtext", + "styler (>= 1.2.0)", + "targets (>= 0.6.0)", + "testit", + "tibble", + "tikzDevice (>= 0.10)", + "tinytex (>= 0.56)", + "webshot", + "rstudioapi", + "svglite" + ], + "License": "GPL", + "URL": "https://yihui.org/knitr/", + "BugReports": "https://github.com/yihui/knitr/issues", + "Encoding": "UTF-8", + "VignetteBuilder": "litedown, knitr", + "SystemRequirements": "Package vignettes based on R Markdown v2 or reStructuredText require Pandoc (http://pandoc.org). The function rst2pdf() requires rst2pdf (https://github.com/rst2pdf/rst2pdf).", + "Collate": "'block.R' 'cache.R' 'citation.R' 'hooks-html.R' 'plot.R' 'utils.R' 'defaults.R' 'concordance.R' 'engine.R' 'highlight.R' 'themes.R' 'header.R' 'hooks-asciidoc.R' 'hooks-chunk.R' 'hooks-extra.R' 'hooks-latex.R' 'hooks-md.R' 'hooks-rst.R' 'hooks-textile.R' 'hooks.R' 'otel.R' 'output.R' 'package.R' 'pandoc.R' 'params.R' 'parser.R' 'pattern.R' 'rocco.R' 'spin.R' 'table.R' 'template.R' 'utils-conversion.R' 'utils-rd2html.R' 'utils-string.R' 'utils-sweave.R' 'utils-upload.R' 'utils-vignettes.R' 'zzz.R'", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre] (ORCID: , URL: https://yihui.org), Abhraneel Sarma [ctb], Adam Vogt [ctb], Alastair Andrew [ctb], Alex Zvoleff [ctb], Amar Al-Zubaidi [ctb], Andre Simon [ctb] (the CSS files under inst/themes/ were derived from the Highlight package http://www.andre-simon.de), Aron Atkins [ctb], Aaron Wolen [ctb], Ashley Manton [ctb], Atsushi Yasumoto [ctb] (ORCID: ), Ben Baumer [ctb], Brian Diggs [ctb], Brian Zhang [ctb], Bulat Yapparov [ctb], Cassio Pereira [ctb], Christophe Dervieux [ctb], David Hall [ctb], David Hugh-Jones [ctb], David Robinson [ctb], Doug Hemken [ctb], Duncan Murdoch [ctb], Elio Campitelli [ctb], Ellis Hughes [ctb], Emily Riederer [ctb], Fabian Hirschmann [ctb], Fitch Simeon [ctb], Forest Fang [ctb], Frank E Harrell Jr [ctb] (the Sweavel package at inst/misc/Sweavel.sty), Garrick Aden-Buie [ctb], Gregoire Detrez [ctb], Hadley Wickham [ctb], Hao Zhu [ctb], Heewon Jeon [ctb], Henrik Bengtsson [ctb], Hiroaki Yutani [ctb], Ian Lyttle [ctb], Hodges Daniel [ctb], Jacob Bien [ctb], Jake Burkhead [ctb], James Manton [ctb], Jared Lander [ctb], Jason Punyon [ctb], Javier Luraschi [ctb], Jeff Arnold [ctb], Jenny Bryan [ctb], Jeremy Ashkenas [ctb, cph] (the CSS file at inst/misc/docco-classic.css), Jeremy Stephens [ctb], Jim Hester [ctb], Joe Cheng [ctb], Johannes Ranke [ctb], John Honaker [ctb], John Muschelli [ctb], Jonathan Keane [ctb], JJ Allaire [ctb], Johan Toloe [ctb], Jonathan Sidi [ctb], Joseph Larmarange [ctb], Julien Barnier [ctb], Kaiyin Zhong [ctb], Kamil Slowikowski [ctb], Karl Forner [ctb], Kevin K. Smith [ctb], Kirill Mueller [ctb], Kohske Takahashi [ctb], Lorenz Walthert [ctb], Lucas Gallindo [ctb], Marius Hofert [ctb], Martin Modrák [ctb], Michael Chirico [ctb], Michael Friendly [ctb], Michal Bojanowski [ctb], Michel Kuhlmann [ctb], Miller Patrick [ctb], Nacho Caballero [ctb], Nick Salkowski [ctb], Niels Richard Hansen [ctb], Noam Ross [ctb], Obada Mahdi [ctb], Pavel N. Krivitsky [ctb] (ORCID: ), Pedro Faria [ctb], Qiang Li [ctb], Ramnath Vaidyanathan [ctb], Richard Cotton [ctb], Robert Krzyzanowski [ctb], Rodrigo Copetti [ctb], Romain Francois [ctb], Ruaridh Williamson [ctb], Sagiru Mati [ctb] (ORCID: ), Scott Kostyshak [ctb], Sebastian Meyer [ctb], Sietse Brouwer [ctb], Simon de Bernard [ctb], Sylvain Rousseau [ctb], Taiyun Wei [ctb], Thibaut Assus [ctb], Thibaut Lamadon [ctb], Thomas Leeper [ctb], Tim Mastny [ctb], Tom Torsney-Weir [ctb], Trevor Davis [ctb], Viktoras Veitas [ctb], Weicheng Zhu [ctb], Wush Wu [ctb], Zachary Foster [ctb], Zhian N. Kamvar [ctb] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Yihui Xie ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "labeling": { + "Package": "labeling", + "Version": "0.4.3", + "Source": "Repository", + "Type": "Package", + "Title": "Axis Labeling", + "Date": "2023-08-29", + "Author": "Justin Talbot,", + "Maintainer": "Nuno Sempere ", + "Description": "Functions which provide a range of axis labeling algorithms.", + "License": "MIT + file LICENSE | Unlimited", + "Collate": "'labeling.R'", + "NeedsCompilation": "no", + "Imports": [ + "stats", + "graphics" + ], + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "later": { + "Package": "later", + "Version": "1.4.5", + "Source": "Repository", + "Type": "Package", + "Title": "Utilities for Scheduling Functions to Execute Later with Event Loops", + "Authors@R": "c( person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Charlie\", \"Gao\", , \"charlie.gao@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-0750-061X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")), person(\"Marcus\", \"Geelnard\", role = c(\"ctb\", \"cph\"), comment = \"TinyCThread library, https://tinycthread.github.io/\"), person(\"Evan\", \"Nemerson\", role = c(\"ctb\", \"cph\"), comment = \"TinyCThread library, https://tinycthread.github.io/\") )", + "Description": "Executes arbitrary R or C functions some time after the current time, after the R execution stack has emptied. The functions are scheduled in an event loop.", + "License": "MIT + file LICENSE", + "URL": "https://later.r-lib.org, https://github.com/r-lib/later", + "BugReports": "https://github.com/r-lib/later/issues", + "Depends": [ + "R (>= 3.5)" + ], + "Imports": [ + "Rcpp (>= 1.0.10)", + "rlang" + ], + "Suggests": [ + "knitr", + "nanonext", + "promises", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-07-18", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Winston Chang [aut] (ORCID: ), Joe Cheng [aut], Charlie Gao [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: ), Marcus Geelnard [ctb, cph] (TinyCThread library, https://tinycthread.github.io/), Evan Nemerson [ctb, cph] (TinyCThread library, https://tinycthread.github.io/)", + "Maintainer": "Charlie Gao ", + "Repository": "P3M" + }, + "lattice": { + "Package": "lattice", + "Version": "0.22-7", + "Source": "Repository", + "Date": "2025-03-31", + "Priority": "recommended", + "Title": "Trellis Graphics for R", + "Authors@R": "c(person(\"Deepayan\", \"Sarkar\", role = c(\"aut\", \"cre\"), email = \"deepayan.sarkar@r-project.org\", comment = c(ORCID = \"0000-0003-4107-1553\")), person(\"Felix\", \"Andrews\", role = \"ctb\"), person(\"Kevin\", \"Wright\", role = \"ctb\", comment = \"documentation\"), person(\"Neil\", \"Klepeis\", role = \"ctb\"), person(\"Johan\", \"Larsson\", role = \"ctb\", comment = \"miscellaneous improvements\"), person(\"Zhijian (Jason)\", \"Wen\", role = \"cph\", comment = \"filled contour code\"), person(\"Paul\", \"Murrell\", role = \"ctb\", email = \"paul@stat.auckland.ac.nz\"), person(\"Stefan\", \"Eng\", role = \"ctb\", comment = \"violin plot improvements\"), person(\"Achim\", \"Zeileis\", role = \"ctb\", comment = \"modern colors\"), person(\"Alexandre\", \"Courtiol\", role = \"ctb\", comment = \"generics for larrows, lpolygon, lrect and lsegments\") )", + "Description": "A powerful and elegant high-level data visualization system inspired by Trellis graphics, with an emphasis on multivariate data. Lattice is sufficient for typical graphics needs, and is also flexible enough to handle most nonstandard requirements. See ?Lattice for an introduction.", + "Depends": [ + "R (>= 4.0.0)" + ], + "Suggests": [ + "KernSmooth", + "MASS", + "latticeExtra", + "colorspace" + ], + "Imports": [ + "grid", + "grDevices", + "graphics", + "stats", + "utils" + ], + "Enhances": [ + "chron", + "zoo" + ], + "LazyLoad": "yes", + "LazyData": "yes", + "License": "GPL (>= 2)", + "URL": "https://lattice.r-forge.r-project.org/", + "BugReports": "https://github.com/deepayan/lattice/issues", + "NeedsCompilation": "yes", + "Author": "Deepayan Sarkar [aut, cre] (), Felix Andrews [ctb], Kevin Wright [ctb] (documentation), Neil Klepeis [ctb], Johan Larsson [ctb] (miscellaneous improvements), Zhijian (Jason) Wen [cph] (filled contour code), Paul Murrell [ctb], Stefan Eng [ctb] (violin plot improvements), Achim Zeileis [ctb] (modern colors), Alexandre Courtiol [ctb] (generics for larrows, lpolygon, lrect and lsegments)", + "Maintainer": "Deepayan Sarkar ", + "Repository": "CRAN" + }, + "lava": { + "Package": "lava", + "Version": "1.8.2", + "Source": "Repository", + "Type": "Package", + "Title": "Latent Variable Models", + "Authors@R": "c(person(\"Klaus K.\", \"Holst\", email=\"klaus@holst.it\", role=c(\"aut\", \"cre\")), person(\"Brice\", \"Ozenne\", role = \"ctb\"), person(\"Thomas\", \"Gerds\", role = \"ctb\"))", + "Author": "Klaus K. Holst [aut, cre], Brice Ozenne [ctb], Thomas Gerds [ctb]", + "Maintainer": "Klaus K. Holst ", + "Description": "A general implementation of Structural Equation Models with latent variables (MLE, 2SLS, and composite likelihood estimators) with both continuous, censored, and ordinal outcomes (Holst and Budtz-Joergensen (2013) ). Mixture latent variable models and non-linear latent variable models (Holst and Budtz-Joergensen (2020) ). The package also provides methods for graph exploration (d-separation, back-door criterion), simulation of general non-linear latent variable models, and estimation of influence functions for a broad range of statistical models.", + "URL": "https://kkholst.github.io/lava/", + "BugReports": "https://github.com/kkholst/lava/issues", + "License": "GPL-3", + "LazyLoad": "yes", + "Depends": [ + "R (>= 3.0)" + ], + "Imports": [ + "cli", + "future.apply", + "graphics", + "grDevices", + "methods", + "numDeriv", + "progressr", + "stats", + "survival", + "SQUAREM", + "utils" + ], + "Suggests": [ + "KernSmooth", + "Rgraphviz", + "data.table", + "ellipse", + "fields", + "geepack", + "graph", + "knitr", + "rmarkdown", + "igraph (>= 0.6)", + "lavaSearch2", + "lme4 (>= 1.1.35.1)", + "MASS", + "Matrix (>= 1.6.3)", + "mets (>= 1.1)", + "nlme", + "optimx", + "polycor", + "quantreg", + "rgl", + "targeted (>= 0.4)", + "testthat (>= 0.11)", + "visNetwork" + ], + "VignetteBuilder": "knitr,rmarkdown", + "ByteCompile": "yes", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Repository": "RSPM" + }, + "lhs": { + "Package": "lhs", + "Version": "1.2.0", + "Source": "Repository", + "Title": "Latin Hypercube Samples", + "Authors@R": "person(given = \"Rob\", family = \"Carnell\", role = c(\"aut\", \"cre\"), email = \"bertcarnell@gmail.com\")", + "Description": "Provides a number of methods for creating and augmenting Latin Hypercube Samples and Orthogonal Array Latin Hypercube Samples.", + "License": "GPL-3", + "Encoding": "UTF-8", + "Depends": [ + "R (>= 3.4.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Imports": [ + "Rcpp" + ], + "Suggests": [ + "testthat", + "DoE.base", + "knitr", + "rmarkdown" + ], + "URL": "https://github.com/bertcarnell/lhs", + "BugReports": "https://github.com/bertcarnell/lhs/issues", + "RoxygenNote": "7.3.2", + "VignetteBuilder": "knitr", + "NeedsCompilation": "yes", + "Author": "Rob Carnell [aut, cre]", + "Maintainer": "Rob Carnell ", + "Repository": "RSPM" + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.5", + "Source": "Repository", + "Title": "Manage the Life Cycle of your Package Functions", + "Authors@R": "c( person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Manage the life cycle of your exported functions with shared conventions, documentation badges, and user-friendly deprecation warnings.", + "License": "MIT + file LICENSE", + "URL": "https://lifecycle.r-lib.org/, https://github.com/r-lib/lifecycle", + "BugReports": "https://github.com/r-lib/lifecycle/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "rlang (>= 1.1.0)" + ], + "Suggests": [ + "covr", + "knitr", + "lintr (>= 3.1.0)", + "rmarkdown", + "testthat (>= 3.0.1)", + "tibble", + "tidyverse", + "tools", + "vctrs", + "withr", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate, usethis", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Lionel Henry [aut, cre], Hadley Wickham [aut] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "P3M" + }, + "listenv": { + "Package": "listenv", + "Version": "0.10.0", + "Source": "Repository", + "Depends": [ + "R (>= 3.1.2)" + ], + "Suggests": [ + "R.utils", + "R.rsp", + "markdown" + ], + "VignetteBuilder": "R.rsp", + "Title": "Environments Behaving (Almost) as Lists", + "Authors@R": "c(person(\"Henrik\", \"Bengtsson\", role=c(\"aut\", \"cre\", \"cph\"), email = \"henrikb@braju.com\"))", + "Description": "List environments are environments that have list-like properties. For instance, the elements of a list environment are ordered and can be accessed and iterated over using index subsetting, e.g. 'x <- listenv(a = 1, b = 2); for (i in seq_along(x)) x[[i]] <- x[[i]] ^ 2; y <- as.list(x)'.", + "License": "LGPL (>= 2.1)", + "LazyLoad": "TRUE", + "URL": "https://listenv.futureverse.org, https://github.com/futureverse/listenv", + "BugReports": "https://github.com/futureverse/listenv/issues", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Henrik Bengtsson [aut, cre, cph]", + "Maintainer": "Henrik Bengtsson ", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "litedown": { + "Package": "litedown", + "Version": "0.9", + "Source": "Repository", + "Type": "Package", + "Title": "A Lightweight Version of R Markdown", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")), person(\"Tim\", \"Taylor\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8587-7113\")), person() )", + "Description": "Render R Markdown to Markdown (without using 'knitr'), and Markdown to lightweight HTML or 'LaTeX' documents with the 'commonmark' package (instead of 'Pandoc'). Some missing Markdown features in 'commonmark' are also supported, such as raw HTML or 'LaTeX' blocks, 'LaTeX' math, superscripts, subscripts, footnotes, element attributes, and appendices, but not all 'Pandoc' Markdown features are (or will be) supported. With additional JavaScript and CSS, you can also create HTML slides and articles. This package can be viewed as a trimmed-down version of R Markdown and 'knitr'. It does not aim at rich Markdown features or a large variety of output formats (the primary formats are HTML and 'LaTeX'). Book and website projects of multiple input documents are also supported.", + "Depends": [ + "R (>= 3.2.0)" + ], + "Imports": [ + "utils", + "commonmark (>= 2.0.0)", + "xfun (>= 0.55)" + ], + "Suggests": [ + "rbibutils", + "rstudioapi", + "tinytex" + ], + "License": "MIT + file LICENSE", + "URL": "https://github.com/yihui/litedown", + "BugReports": "https://github.com/yihui/litedown/issues", + "VignetteBuilder": "litedown", + "RoxygenNote": "7.3.3", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre] (ORCID: , URL: https://yihui.org), Tim Taylor [ctb] (ORCID: )", + "Maintainer": "Yihui Xie ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "lubridate": { + "Package": "lubridate", + "Version": "1.9.4", + "Source": "Repository", + "Type": "Package", + "Title": "Make Dealing with Dates a Little Easier", + "Authors@R": "c( person(\"Vitalie\", \"Spinu\", , \"spinuvit@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Garrett\", \"Grolemund\", role = \"aut\"), person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Davis\", \"Vaughan\", role = \"ctb\"), person(\"Ian\", \"Lyttle\", role = \"ctb\"), person(\"Imanuel\", \"Costigan\", role = \"ctb\"), person(\"Jason\", \"Law\", role = \"ctb\"), person(\"Doug\", \"Mitarotonda\", role = \"ctb\"), person(\"Joseph\", \"Larmarange\", role = \"ctb\"), person(\"Jonathan\", \"Boiser\", role = \"ctb\"), person(\"Chel Hee\", \"Lee\", role = \"ctb\") )", + "Maintainer": "Vitalie Spinu ", + "Description": "Functions to work with date-times and time-spans: fast and user friendly parsing of date-time data, extraction and updating of components of a date-time (years, months, days, hours, minutes, and seconds), algebraic manipulation on date-time and time-span objects. The 'lubridate' package has a consistent and memorable syntax that makes working with dates easy and fun.", + "License": "GPL (>= 2)", + "URL": "https://lubridate.tidyverse.org, https://github.com/tidyverse/lubridate", + "BugReports": "https://github.com/tidyverse/lubridate/issues", + "Depends": [ + "methods", + "R (>= 3.2)" + ], + "Imports": [ + "generics", + "timechange (>= 0.3.0)" + ], + "Suggests": [ + "covr", + "knitr", + "rmarkdown", + "testthat (>= 2.1.0)", + "vctrs (>= 0.6.5)" + ], + "Enhances": [ + "chron", + "data.table", + "timeDate", + "tis", + "zoo" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.2.3", + "SystemRequirements": "C++11, A system with zoneinfo data (e.g. /usr/share/zoneinfo). On Windows the zoneinfo included with R is used.", + "Collate": "'Dates.r' 'POSIXt.r' 'util.r' 'parse.r' 'timespans.r' 'intervals.r' 'difftimes.r' 'durations.r' 'periods.r' 'accessors-date.R' 'accessors-day.r' 'accessors-dst.r' 'accessors-hour.r' 'accessors-minute.r' 'accessors-month.r' 'accessors-quarter.r' 'accessors-second.r' 'accessors-tz.r' 'accessors-week.r' 'accessors-year.r' 'am-pm.r' 'time-zones.r' 'numeric.r' 'coercion.r' 'constants.r' 'cyclic_encoding.r' 'data.r' 'decimal-dates.r' 'deprecated.r' 'format_ISO8601.r' 'guess.r' 'hidden.r' 'instants.r' 'leap-years.r' 'ops-addition.r' 'ops-compare.r' 'ops-division.r' 'ops-integer-division.r' 'ops-m+.r' 'ops-modulo.r' 'ops-multiplication.r' 'ops-subtraction.r' 'package.r' 'pretty.r' 'round.r' 'stamp.r' 'tzdir.R' 'update.r' 'vctrs.R' 'zzz.R'", + "NeedsCompilation": "yes", + "Author": "Vitalie Spinu [aut, cre], Garrett Grolemund [aut], Hadley Wickham [aut], Davis Vaughan [ctb], Ian Lyttle [ctb], Imanuel Costigan [ctb], Jason Law [ctb], Doug Mitarotonda [ctb], Joseph Larmarange [ctb], Jonathan Boiser [ctb], Chel Hee Lee [ctb]", + "Repository": "RSPM" + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.4", + "Source": "Repository", + "Type": "Package", + "Title": "A Forward-Pipe Operator for R", + "Authors@R": "c( person(\"Stefan Milton\", \"Bache\", , \"stefan@stefanbache.dk\", role = c(\"aut\", \"cph\"), comment = \"Original author and creator of magrittr\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = \"cre\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides a mechanism for chaining commands with a new forward-pipe operator, %>%. This operator will forward a value, or the result of an expression, into the next function call/expression. There is flexible support for the type of right-hand side expressions. For more information, see package vignette. To quote Rene Magritte, \"Ceci n'est pas un pipe.\"", + "License": "MIT + file LICENSE", + "URL": "https://magrittr.tidyverse.org, https://github.com/tidyverse/magrittr", + "BugReports": "https://github.com/tidyverse/magrittr/issues", + "Depends": [ + "R (>= 3.4.0)" + ], + "Suggests": [ + "covr", + "knitr", + "rlang", + "rmarkdown", + "testthat" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "Yes", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Stefan Milton Bache [aut, cph] (Original author and creator of magrittr), Hadley Wickham [aut], Lionel Henry [cre], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Lionel Henry ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "maps": { + "Package": "maps", + "Version": "3.4.3", + "Source": "Repository", + "Title": "Draw Geographical Maps", + "Date": "2025-05-15", + "Description": "Display of maps. Projection code and larger maps are in separate packages ('mapproj' and 'mapdata').", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "graphics", + "utils" + ], + "LazyData": "yes", + "Suggests": [ + "mapproj (>= 1.2-0)", + "mapdata (>= 2.3.0)", + "sf", + "rnaturalearth" + ], + "License": "GPL-2", + "URL": "https://github.com/adeckmyn/maps", + "BugReports": "https://github.com/adeckmyn/maps/issues", + "Authors@R": "c(person(given = c(\"Richard\", \"A.\"), family = \"Becker\", role = \"aut\", comment= \"Original S code\"), person(given = c(\"Allan\", \"R.\"), family = \"Wilks\", role = \"aut\", comment= \"Original S code\"), person(given = \"Ray\", family = \"Brownrigg\", role = c(\"trl\", \"aut\"), comment= \"R version\"), person(given = c(\"Thomas\", \"P.\"), family = \"Minka\", role = \"aut\", comment= \"Enhancements\"), person(given = \"Alex\", family = \"Deckmyn\", role = c(\"aut\", \"cre\"), comment= c(ORCID=\"0009-0002-2010-8310\"), email = \"alex.deckmyn@meteo.be\"))", + "NeedsCompilation": "yes", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Author": "Richard A. Becker [aut] (Original S code), Allan R. Wilks [aut] (Original S code), Ray Brownrigg [trl, aut] (R version), Thomas P. Minka [aut] (Enhancements), Alex Deckmyn [aut, cre] (ORCID: )", + "Maintainer": "Alex Deckmyn ", + "Encoding": "UTF-8" + }, + "markdown": { + "Package": "markdown", + "Version": "2.0", + "Source": "Repository", + "Type": "Package", + "Title": "Render Markdown with 'commonmark'", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"JJ\", \"Allaire\", role = \"aut\"), person(\"Jeffrey\", \"Horner\", role = \"aut\"), person(\"Henrik\", \"Bengtsson\", role = \"ctb\"), person(\"Jim\", \"Hester\", role = \"ctb\"), person(\"Yixuan\", \"Qiu\", role = \"ctb\"), person(\"Kohske\", \"Takahashi\", role = \"ctb\"), person(\"Adam\", \"November\", role = \"ctb\"), person(\"Nacho\", \"Caballero\", role = \"ctb\"), person(\"Jeroen\", \"Ooms\", role = \"ctb\"), person(\"Thomas\", \"Leeper\", role = \"ctb\"), person(\"Joe\", \"Cheng\", role = \"ctb\"), person(\"Andrzej\", \"Oles\", role = \"ctb\"), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Render Markdown to full and lightweight HTML/LaTeX documents with the 'commonmark' package. This package has been superseded by 'litedown'.", + "Depends": [ + "R (>= 2.11.1)" + ], + "Imports": [ + "utils", + "xfun", + "litedown (>= 0.6)" + ], + "Suggests": [ + "knitr", + "rmarkdown (>= 2.18)", + "yaml", + "RCurl" + ], + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/markdown", + "BugReports": "https://github.com/rstudio/markdown/issues", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre] (), JJ Allaire [aut], Jeffrey Horner [aut], Henrik Bengtsson [ctb], Jim Hester [ctb], Yixuan Qiu [ctb], Kohske Takahashi [ctb], Adam November [ctb], Nacho Caballero [ctb], Jeroen Ooms [ctb], Thomas Leeper [ctb], Joe Cheng [ctb], Andrzej Oles [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Yihui Xie ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Title": "'Memoisation' of Functions", + "Authors@R": "c(person(given = \"Hadley\", family = \"Wickham\", role = \"aut\", email = \"hadley@rstudio.com\"), person(given = \"Jim\", family = \"Hester\", role = \"aut\"), person(given = \"Winston\", family = \"Chang\", role = c(\"aut\", \"cre\"), email = \"winston@rstudio.com\"), person(given = \"Kirill\", family = \"Müller\", role = \"aut\", email = \"krlmlr+r@mailbox.org\"), person(given = \"Daniel\", family = \"Cook\", role = \"aut\", email = \"danielecook@gmail.com\"), person(given = \"Mark\", family = \"Edmondson\", role = \"ctb\", email = \"r@sunholo.com\"))", + "Description": "Cache the results of a function so that when you call it again with the same arguments it returns the previously computed value.", + "License": "MIT + file LICENSE", + "URL": "https://memoise.r-lib.org, https://github.com/r-lib/memoise", + "BugReports": "https://github.com/r-lib/memoise/issues", + "Imports": [ + "rlang (>= 0.4.10)", + "cachem" + ], + "Suggests": [ + "digest", + "aws.s3", + "covr", + "googleAuthR", + "googleCloudStorageR", + "httr", + "testthat" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.1.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut], Jim Hester [aut], Winston Chang [aut, cre], Kirill Müller [aut], Daniel Cook [aut], Mark Edmondson [ctb]", + "Maintainer": "Winston Chang ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "mime": { + "Package": "mime", + "Version": "0.13", + "Source": "Repository", + "Type": "Package", + "Title": "Map Filenames to MIME Types", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")), person(\"Jeffrey\", \"Horner\", role = \"ctb\"), person(\"Beilei\", \"Bian\", role = \"ctb\") )", + "Description": "Guesses the MIME type from a filename extension using the data derived from /etc/mime.types in UNIX-type systems.", + "Imports": [ + "tools" + ], + "License": "GPL", + "URL": "https://github.com/yihui/mime", + "BugReports": "https://github.com/yihui/mime/issues", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Yihui Xie [aut, cre] (, https://yihui.org), Jeffrey Horner [ctb], Beilei Bian [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "mnormt": { + "Package": "mnormt", + "Version": "2.1.1", + "Source": "Repository", + "Date": "2022-09-26", + "Title": "The Multivariate Normal and t Distributions, and Their Truncated Versions", + "Author": "Adelchi Azzalini [aut, cre], Alan Genz [aut] (most Fortran code), Alan Miller [ctb] (Fortran routine PHI), Michael J. Wichura [ctb] (Fortran routine PHINV), G. W. Hill [ctb] (Fortran routine STDINV), Yihong Ge [ctb] (Fortran routines BNVU and MVBVU).", + "Maintainer": "Adelchi Azzalini ", + "Depends": [ + "R (>= 2.2.0)" + ], + "Description": "Functions are provided for computing the density and the distribution function of d-dimensional normal and \"t\" random variables, possibly truncated (on one side or two sides), and for generating random vectors sampled from these distributions, except sampling from the truncated \"t\". Moments of arbitrary order of a multivariate truncated normal are computed, and converted to cumulants up to order 4. Probabilities are computed via non-Monte Carlo methods; different routines are used in the case d=1, d=2, d=3, d>3, if d denotes the dimensionality.", + "License": "GPL-2 | GPL-3", + "URL": "http://azzalini.stat.unipd.it/SW/Pkg-mnormt/", + "NeedsCompilation": "yes", + "Encoding": "UTF-8", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "modeldata": { + "Package": "modeldata", + "Version": "1.5.1", + "Source": "Repository", + "Title": "Data Sets Useful for Modeling Examples", + "Authors@R": "c( person(\"Max\", \"Kuhn\", , \"max@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Data sets used for demonstrating or testing model-related packages are contained in this package.", + "License": "MIT + file LICENSE", + "URL": "https://modeldata.tidymodels.org, https://github.com/tidymodels/modeldata", + "BugReports": "https://github.com/tidymodels/modeldata/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli", + "dplyr", + "MASS", + "purrr", + "rlang (>= 1.1.0)", + "tibble" + ], + "Suggests": [ + "covr", + "ggplot2", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate, tidymodels/tidymodels", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-27", + "Encoding": "UTF-8", + "LazyData": "true", + "LazyDataCompression": "xz", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Max Kuhn [aut, cre], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Max Kuhn ", + "Repository": "RSPM" + }, + "modelenv": { + "Package": "modelenv", + "Version": "0.2.0", + "Source": "Repository", + "Title": "Provide Tools to Register Models for Use in 'tidymodels'", + "Authors@R": "c( person(\"Emil\", \"Hvitfeldt\", , \"emil.hvitfeldt@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-0679-1945\")), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "An developer focused, low dependency package in 'tidymodels' that provides functions to register how models are to be used. Functions to register models are complimented with accessor functions to retrieve registered model information to aid in model fitting and error handling.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "Imports": [ + "cli", + "glue", + "rlang (>= 1.1.0)", + "tibble", + "vctrs" + ], + "Suggests": [ + "covr", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "URL": "https://github.com/tidymodels/modelenv, http://modelenv.tidymodels.org/", + "BugReports": "https://github.com/tidymodels/modelenv/issues", + "NeedsCompilation": "no", + "Author": "Emil Hvitfeldt [aut, cre] (), Posit Software, PBC [cph, fnd]", + "Maintainer": "Emil Hvitfeldt ", + "Repository": "RSPM" + }, + "modelr": { + "Package": "modelr", + "Version": "0.1.11", + "Source": "Repository", + "Title": "Modelling Functions that Work with the Pipe", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Functions for modelling that help you seamlessly integrate modelling into a pipeline of data manipulation and visualisation.", + "License": "GPL-3", + "URL": "https://modelr.tidyverse.org, https://github.com/tidyverse/modelr", + "BugReports": "https://github.com/tidyverse/modelr/issues", + "Depends": [ + "R (>= 3.2)" + ], + "Imports": [ + "broom", + "magrittr", + "purrr (>= 0.2.2)", + "rlang (>= 1.0.6)", + "tibble", + "tidyr (>= 0.8.0)", + "tidyselect", + "vctrs" + ], + "Suggests": [ + "compiler", + "covr", + "ggplot2", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.2.3", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "RSPM" + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-168", + "Source": "Repository", + "Date": "2025-03-31", + "Priority": "recommended", + "Title": "Linear and Nonlinear Mixed Effects Models", + "Authors@R": "c(person(\"José\", \"Pinheiro\", role = \"aut\", comment = \"S version\"), person(\"Douglas\", \"Bates\", role = \"aut\", comment = \"up to 2007\"), person(\"Saikat\", \"DebRoy\", role = \"ctb\", comment = \"up to 2002\"), person(\"Deepayan\", \"Sarkar\", role = \"ctb\", comment = \"up to 2005\"), person(\"EISPACK authors\", role = \"ctb\", comment = \"src/rs.f\"), person(\"Siem\", \"Heisterkamp\", role = \"ctb\", comment = \"Author fixed sigma\"), person(\"Bert\", \"Van Willigen\",role = \"ctb\", comment = \"Programmer fixed sigma\"), person(\"Johannes\", \"Ranke\", role = \"ctb\", comment = \"varConstProp()\"), person(\"R Core Team\", email = \"R-core@R-project.org\", role = c(\"aut\", \"cre\"), comment = c(ROR = \"02zz1nj61\")))", + "Contact": "see 'MailingList'", + "Description": "Fit and compare Gaussian linear and nonlinear mixed-effects models.", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "graphics", + "stats", + "utils", + "lattice" + ], + "Suggests": [ + "MASS", + "SASmixed" + ], + "LazyData": "yes", + "Encoding": "UTF-8", + "License": "GPL (>= 2)", + "BugReports": "https://bugs.r-project.org", + "MailingList": "R-help@r-project.org", + "URL": "https://svn.r-project.org/R-packages/trunk/nlme/", + "NeedsCompilation": "yes", + "Author": "José Pinheiro [aut] (S version), Douglas Bates [aut] (up to 2007), Saikat DebRoy [ctb] (up to 2002), Deepayan Sarkar [ctb] (up to 2005), EISPACK authors [ctb] (src/rs.f), Siem Heisterkamp [ctb] (Author fixed sigma), Bert Van Willigen [ctb] (Programmer fixed sigma), Johannes Ranke [ctb] (varConstProp()), R Core Team [aut, cre] (02zz1nj61)", + "Maintainer": "R Core Team ", + "Repository": "CRAN" + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-20", + "Source": "Repository", + "Priority": "recommended", + "Date": "2025-01-01", + "Depends": [ + "R (>= 3.0.0)", + "stats", + "utils" + ], + "Suggests": [ + "MASS" + ], + "Authors@R": "c(person(\"Brian\", \"Ripley\", role = c(\"aut\", \"cre\", \"cph\"), email = \"Brian.Ripley@R-project.org\"), person(\"William\", \"Venables\", role = \"cph\"))", + "Description": "Software for feed-forward neural networks with a single hidden layer, and for multinomial log-linear models.", + "Title": "Feed-Forward Neural Networks and Multinomial Log-Linear Models", + "ByteCompile": "yes", + "License": "GPL-2 | GPL-3", + "URL": "http://www.stats.ox.ac.uk/pub/MASS4/", + "NeedsCompilation": "yes", + "Author": "Brian Ripley [aut, cre, cph], William Venables [cph]", + "Maintainer": "Brian Ripley ", + "Repository": "CRAN" + }, + "numDeriv": { + "Package": "numDeriv", + "Version": "2016.8-1.1", + "Source": "Repository", + "Title": "Accurate Numerical Derivatives", + "Description": "Methods for calculating (usually) accurate numerical first and second order derivatives. Accurate calculations are done using 'Richardson''s' extrapolation or, when applicable, a complex step derivative is available. A simple difference method is also provided. Simple difference is (usually) less accurate but is much quicker than 'Richardson''s' extrapolation and provides a useful cross-check. Methods are provided for real scalar and vector valued functions.", + "Depends": [ + "R (>= 2.11.1)" + ], + "LazyLoad": "yes", + "ByteCompile": "yes", + "License": "GPL-2", + "Copyright": "2006-2011, Bank of Canada. 2012-2016, Paul Gilbert", + "Author": "Paul Gilbert and Ravi Varadhan", + "Maintainer": "Paul Gilbert ", + "URL": "http://optimizer.r-forge.r-project.org/", + "NeedsCompilation": "no", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "openssl": { + "Package": "openssl", + "Version": "2.3.4", + "Source": "Repository", + "Type": "Package", + "Title": "Toolkit for Encryption, Signatures and Certificates Based on OpenSSL", + "Authors@R": "c(person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Oliver\", \"Keyes\", role = \"ctb\"))", + "Description": "Bindings to OpenSSL libssl and libcrypto, plus custom SSH key parsers. Supports RSA, DSA and EC curves P-256, P-384, P-521, and curve25519. Cryptographic signatures can either be created and verified manually or via x509 certificates. AES can be used in cbc, ctr or gcm mode for symmetric encryption; RSA for asymmetric (public key) encryption or EC for Diffie Hellman. High-level envelope functions combine RSA and AES for encrypting arbitrary sized data. Other utilities include key generators, hash functions (md5, sha1, sha256, etc), base64 encoder, a secure random number generator, and 'bignum' math methods for manually performing crypto calculations on large multibyte integers.", + "License": "MIT + file LICENSE", + "URL": "https://jeroen.r-universe.dev/openssl", + "BugReports": "https://github.com/jeroen/openssl/issues", + "SystemRequirements": "OpenSSL >= 1.0.2", + "VignetteBuilder": "knitr", + "Imports": [ + "askpass" + ], + "Suggests": [ + "curl", + "testthat (>= 2.1.0)", + "digest", + "knitr", + "rmarkdown", + "jsonlite", + "jose", + "sodium" + ], + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (ORCID: ), Oliver Keyes [ctb]", + "Maintainer": "Jeroen Ooms ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "parallelly": { + "Package": "parallelly", + "Version": "1.46.1", + "Source": "Repository", + "Title": "Enhancing the 'parallel' Package", + "Imports": [ + "parallel", + "tools", + "utils" + ], + "Suggests": [ + "commonmark", + "base64enc" + ], + "VignetteBuilder": "parallelly", + "Authors@R": "c( person(\"Henrik\", \"Bengtsson\", role = c(\"aut\", \"cre\", \"cph\"), email = \"henrikb@braju.com\", comment = c(ORCID = \"0000-0002-7579-5165\")), person(\"Mike\", \"Cheng\", role = c(\"ctb\"), email = \"mikefc@coolbutuseless.com\") )", + "Description": "Utility functions that enhance the 'parallel' package and support the built-in parallel backends of the 'future' package. For example, availableCores() gives the number of CPU cores available to your R process as given by the operating system, 'cgroups' and Linux containers, R options, and environment variables, including those set by job schedulers on high-performance compute clusters. If none is set, it will fall back to parallel::detectCores(). Another example is makeClusterPSOCK(), which is backward compatible with parallel::makePSOCKcluster() while doing a better job in setting up remote cluster workers without the need for configuring the firewall to do port-forwarding to your local computer.", + "License": "LGPL (>= 2.1)", + "LazyLoad": "TRUE", + "ByteCompile": "TRUE", + "URL": "https://parallelly.futureverse.org, https://github.com/futureverse/parallelly", + "BugReports": "https://github.com/futureverse/parallelly/issues", + "Language": "en-US", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Henrik Bengtsson [aut, cre, cph] (ORCID: ), Mike Cheng [ctb]", + "Maintainer": "Henrik Bengtsson ", + "Repository": "RSPM" + }, + "parsnip": { + "Package": "parsnip", + "Version": "1.4.1", + "Source": "Repository", + "Title": "A Common API to Modeling and Analysis Functions", + "Authors@R": "c( person(\"Max\", \"Kuhn\", , \"max@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0003-2402-136X\")), person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = \"aut\"), person(\"Emil\", \"Hvitfeldt\", , \"emil.hvitfeldt@posit.co\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Maintainer": "Max Kuhn ", + "Description": "A common interface is provided to allow users to specify a model without having to remember the different argument names across different functions or computational engines (e.g. 'R', 'Spark', 'Stan', 'H2O', etc).", + "License": "MIT + file LICENSE", + "URL": "https://github.com/tidymodels/parsnip, https://parsnip.tidymodels.org/", + "BugReports": "https://github.com/tidymodels/parsnip/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli", + "dplyr (>= 1.1.0)", + "generics (>= 0.1.2)", + "ggplot2", + "globals", + "glue", + "hardhat (>= 1.4.1)", + "lifecycle", + "magrittr", + "pillar", + "prettyunits", + "purrr (>= 1.0.0)", + "rlang (>= 1.1.0)", + "sparsevctrs (>= 0.2.0)", + "stats", + "tibble (>= 2.1.1)", + "tidyr (>= 1.3.0)", + "utils", + "vctrs (>= 0.6.0)", + "withr" + ], + "Suggests": [ + "bench", + "C50", + "covr", + "dials (>= 1.1.0)", + "earth", + "ggrepel", + "keras", + "kernlab", + "kknn", + "knitr", + "LiblineaR", + "MASS", + "Matrix", + "methods", + "mgcv", + "modeldata", + "nlme", + "prodlim", + "ranger (>= 0.12.0)", + "remotes", + "rmarkdown", + "rpart", + "sparklyr (>= 1.0.0)", + "survival", + "tensorflow", + "testthat (>= 3.0.0)", + "xgboost (>= 1.5.0.1)" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Config/Needs/website": "brulee, C50, dbarts, earth, glmnet, grf, keras, kernlab, kknn, LiblineaR, mgcv, nnet, parsnip, quantreg, randomForest, ranger, rpart, rstanarm, tidymodels/tidymodels, tidyverse/tidytemplate, rstudio/reticulate, xgboost, rmarkdown", + "Config/rcmdcheck/ignore-inconsequential-notes": "true", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Max Kuhn [cre, aut] (ORCID: ), Davis Vaughan [aut], Emil Hvitfeldt [ctb], Posit Software, PBC [cph, fnd] (ROR: )", + "Repository": "RSPM" + }, + "patchwork": { + "Package": "patchwork", + "Version": "1.3.2", + "Source": "Repository", + "Type": "Package", + "Title": "The Composer of Plots", + "Authors@R": "person(given = \"Thomas Lin\", family = \"Pedersen\", role = c(\"cre\", \"aut\"), email = \"thomasp85@gmail.com\", comment = c(ORCID = \"0000-0002-5147-4711\"))", + "Maintainer": "Thomas Lin Pedersen ", + "Description": "The 'ggplot2' package provides a strong API for sequentially building up a plot, but does not concern itself with composition of multiple plots. 'patchwork' is a package that expands the API to allow for arbitrarily complex composition of plots by, among others, providing mathematical operators for combining multiple plots. Other packages that try to address this need (but with a different approach) are 'gridExtra' and 'cowplot'.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Imports": [ + "ggplot2 (>= 3.0.0)", + "gtable (>= 0.3.6)", + "grid", + "stats", + "grDevices", + "utils", + "graphics", + "rlang (>= 1.0.0)", + "cli", + "farver" + ], + "RoxygenNote": "7.3.2", + "URL": "https://patchwork.data-imaginist.com, https://github.com/thomasp85/patchwork", + "BugReports": "https://github.com/thomasp85/patchwork/issues", + "Suggests": [ + "knitr", + "rmarkdown", + "gridGraphics", + "gridExtra", + "ragg", + "testthat (>= 2.1.0)", + "vdiffr", + "covr", + "png", + "gt (>= 0.11.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "gifski", + "NeedsCompilation": "no", + "Author": "Thomas Lin Pedersen [cre, aut] (ORCID: )", + "Repository": "RSPM" + }, + "pillar": { + "Package": "pillar", + "Version": "1.11.1", + "Source": "Repository", + "Title": "Coloured Formatting for Columns", + "Authors@R": "c(person(given = \"Kirill\", family = \"M\\u00fcller\", role = c(\"aut\", \"cre\"), email = \"kirill@cynkra.com\", comment = c(ORCID = \"0000-0002-1416-3412\")), person(given = \"Hadley\", family = \"Wickham\", role = \"aut\"), person(given = \"RStudio\", role = \"cph\"))", + "Description": "Provides 'pillar' and 'colonnade' generics designed for formatting columns of data using the full range of colours provided by modern terminals.", + "License": "MIT + file LICENSE", + "URL": "https://pillar.r-lib.org/, https://github.com/r-lib/pillar", + "BugReports": "https://github.com/r-lib/pillar/issues", + "Imports": [ + "cli (>= 2.3.0)", + "glue", + "lifecycle", + "rlang (>= 1.0.2)", + "utf8 (>= 1.1.0)", + "utils", + "vctrs (>= 0.5.0)" + ], + "Suggests": [ + "bit64", + "DBI", + "debugme", + "DiagrammeR", + "dplyr", + "formattable", + "ggplot2", + "knitr", + "lubridate", + "nanotime", + "nycflights13", + "palmerpenguins", + "rmarkdown", + "scales", + "stringi", + "survival", + "testthat (>= 3.1.1)", + "tibble", + "units (>= 0.7.2)", + "vdiffr", + "withr" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "format_multi_fuzz, format_multi_fuzz_2, format_multi, ctl_colonnade, ctl_colonnade_1, ctl_colonnade_2", + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "true", + "Config/gha/extra-packages": "units=?ignore-before-r=4.3.0", + "Config/Needs/website": "tidyverse/tidytemplate", + "NeedsCompilation": "no", + "Author": "Kirill Müller [aut, cre] (ORCID: ), Hadley Wickham [aut], RStudio [cph]", + "Maintainer": "Kirill Müller ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Title": "Private Configuration for 'R' Packages", + "Author": "Gábor Csárdi", + "Maintainer": "Gábor Csárdi ", + "Description": "Set configuration options on a per-package basis. Options set by a given package only apply to that package, other packages are unaffected.", + "License": "MIT + file LICENSE", + "LazyData": "true", + "Imports": [ + "utils" + ], + "Suggests": [ + "covr", + "testthat", + "disposables (>= 1.0.3)" + ], + "URL": "https://github.com/r-lib/pkgconfig#readme", + "BugReports": "https://github.com/r-lib/pkgconfig/issues", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "plotmo": { + "Package": "plotmo", + "Version": "3.7.0", + "Source": "Repository", + "Title": "Plot a Model's Residuals, Response, and Partial Dependence Plots", + "Authors@R": "person(given = \"Stephen\", family = \"Milborrow\", role = c(\"aut\", \"cre\"), email = \"milbo@sonic.net\")", + "Maintainer": "Stephen Milborrow ", + "Depends": [ + "R (>= 3.4.0)", + "Formula (>= 1.2-3)", + "plotrix" + ], + "Description": "Plot model surfaces for a wide variety of models using partial dependence plots and other techniques. Also plot model residuals and other information on the model.", + "Suggests": [ + "C50 (>= 0.1.0-24)", + "earth (>= 5.1.2)", + "gbm (>= 2.1.1)", + "glmnet (>= 2.0.5)", + "glmnetUtils (>= 1.0.3)", + "MASS (>= 7.3-51)", + "mlr (>= 2.12.1)", + "neuralnet (>= 1.33)", + "partykit (>= 1.2-2)", + "pre (>= 0.5.0)", + "rpart (>= 4.1-15)", + "rpart.plot (>= 3.0.8)" + ], + "License": "GPL-3", + "URL": "http://www.milbo.users.sonic.net", + "NeedsCompilation": "no", + "Author": "Stephen Milborrow [aut, cre]", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "plotrix": { + "Package": "plotrix", + "Version": "3.8-13", + "Source": "Repository", + "Title": "Various Plotting Functions", + "Authors@R": "c( person(\"Jim\", \"Lemon\", role = \"aut\"), person(\"Ben\", \"Bolker\", role = \"ctb\"), person(\"Sander\", \"Oom\", role = \"ctb\"), person(\"Eduardo\", \"Klein\", role = \"ctb\"), person(\"Barry\", \"Rowlingson\", role = \"ctb\"), person(\"Hadley\", \"Wickham\", role = \"ctb\"), person(\"Anupam\", \"Tyagi\", role = \"ctb\"), person(\"Olivier\", \"Eterradossi\", role = \"ctb\"), person(\"Gabor\", \"Grothendieck\", role = \"ctb\"), person(\"Michael\", \"Toews\", role = \"ctb\"), person(\"John\", \"Kane\", role = \"ctb\"), person(\"Rolf\", \"Turner\", role = \"ctb\"), person(\"Carl\", \"Witthoft\", role = \"ctb\"), person(\"Julian\", \"Stander\", role = \"ctb\"), person(\"Thomas\", \"Petzoldt\", role = \"ctb\"), person(\"Remko\", \"Duursma\", role = \"ctb\"), person(\"Elisa\", \"Biancotto\", role = \"ctb\"), person(\"Ofir\", \"Levy\", role = \"ctb\"), person(\"Christophe\", \"Dutang\", role = \"ctb\"), person(\"Peter\", \"Solymos\", role = \"ctb\"), person(\"Robby\", \"Engelmann\", role = \"ctb\"), person(\"Michael\", \"Hecker\", role = \"ctb\"), person(\"Felix\", \"Steinbeck\", role = \"ctb\"), person(\"Hans\", \"Borchers\", role = \"ctb\"), person(\"Henrik\", \"Singmann\", role = \"ctb\"), person(\"Ted\", \"Toal\", role = \"ctb\"), person(\"Derek\", \"Ogle\", role = \"ctb\"), person(\"Darshan\", \"Baral\", role = \"ctb\"), person(\"Ulrike\", \"Groemping\", role = \"ctb\"), person(\"Bill\", \"Venables\", role = \"ctb\"), person(family = \"The CRAN Team\", role = \"ctb\"), person(\"Duncan\", \"Murdoch\", email = \"murdoch.duncan@gmail.com\", role = c(\"ctb\", \"cre\")))", + "Imports": [ + "grDevices", + "graphics", + "stats", + "utils" + ], + "Description": "Lots of plots, various labeling, axis and color scaling functions. The author/maintainer died in September 2023.", + "License": "GPL (>= 2)", + "NeedsCompilation": "no", + "Depends": [ + "R (>= 3.5.0)" + ], + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "URL": "https://plotrix.github.io/plotrix/, https://github.com/plotrix/plotrix", + "BugReports": "https://github.com/plotrix/plotrix/issues", + "Author": "Jim Lemon [aut], Ben Bolker [ctb], Sander Oom [ctb], Eduardo Klein [ctb], Barry Rowlingson [ctb], Hadley Wickham [ctb], Anupam Tyagi [ctb], Olivier Eterradossi [ctb], Gabor Grothendieck [ctb], Michael Toews [ctb], John Kane [ctb], Rolf Turner [ctb], Carl Witthoft [ctb], Julian Stander [ctb], Thomas Petzoldt [ctb], Remko Duursma [ctb], Elisa Biancotto [ctb], Ofir Levy [ctb], Christophe Dutang [ctb], Peter Solymos [ctb], Robby Engelmann [ctb], Michael Hecker [ctb], Felix Steinbeck [ctb], Hans Borchers [ctb], Henrik Singmann [ctb], Ted Toal [ctb], Derek Ogle [ctb], Darshan Baral [ctb], Ulrike Groemping [ctb], Bill Venables [ctb], The CRAN Team [ctb], Duncan Murdoch [ctb, cre]", + "Maintainer": "Duncan Murdoch ", + "Encoding": "UTF-8" + }, + "plyr": { + "Package": "plyr", + "Version": "1.8.9", + "Source": "Repository", + "Title": "Tools for Splitting, Applying and Combining Data", + "Authors@R": "person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = c(\"aut\", \"cre\"))", + "Description": "A set of tools that solves a common set of problems: you need to break a big problem down into manageable pieces, operate on each piece and then put all the pieces back together. For example, you might want to fit a model to each spatial location or time point in your study, summarise data by panels or collapse high-dimensional arrays to simpler summary statistics. The development of 'plyr' has been generously supported by 'Becton Dickinson'.", + "License": "MIT + file LICENSE", + "URL": "http://had.co.nz/plyr, https://github.com/hadley/plyr", + "BugReports": "https://github.com/hadley/plyr/issues", + "Depends": [ + "R (>= 3.1.0)" + ], + "Imports": [ + "Rcpp (>= 0.11.0)" + ], + "Suggests": [ + "abind", + "covr", + "doParallel", + "foreach", + "iterators", + "itertools", + "tcltk", + "testthat" + ], + "LinkingTo": [ + "Rcpp" + ], + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre]", + "Maintainer": "Hadley Wickham ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "png": { + "Package": "png", + "Version": "0.1-8", + "Source": "Repository", + "Title": "Read and write PNG images", + "Author": "Simon Urbanek ", + "Maintainer": "Simon Urbanek ", + "Depends": [ + "R (>= 2.9.0)" + ], + "Description": "This package provides an easy and simple way to read, write and display bitmap images stored in the PNG format. It can read and write both files and in-memory raw vectors.", + "License": "GPL-2 | GPL-3", + "SystemRequirements": "libpng", + "URL": "http://www.rforge.net/png/", + "NeedsCompilation": "yes", + "Repository": "P3M", + "Encoding": "UTF-8" + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.2.0", + "Source": "Repository", + "Title": "Pretty, Human Readable Formatting of Quantities", + "Authors@R": "c( person(\"Gabor\", \"Csardi\", email=\"csardi.gabor@gmail.com\", role=c(\"aut\", \"cre\")), person(\"Bill\", \"Denney\", email=\"wdenney@humanpredictions.com\", role=c(\"ctb\"), comment=c(ORCID=\"0000-0002-5759-428X\")), person(\"Christophe\", \"Regouby\", email=\"christophe.regouby@free.fr\", role=c(\"ctb\")) )", + "Description": "Pretty, human readable formatting of quantities. Time intervals: '1337000' -> '15d 11h 23m 20s'. Vague time intervals: '2674000' -> 'about a month ago'. Bytes: '1337' -> '1.34 kB'. Rounding: '99' with 3 significant digits -> '99.0' p-values: '0.00001' -> '<0.0001'. Colors: '#FF0000' -> 'red'. Quantities: '1239437' -> '1.24 M'.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/prettyunits", + "BugReports": "https://github.com/r-lib/prettyunits/issues", + "Depends": [ + "R(>= 2.10)" + ], + "Suggests": [ + "codetools", + "covr", + "testthat" + ], + "RoxygenNote": "7.2.3", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Gabor Csardi [aut, cre], Bill Denney [ctb] (), Christophe Regouby [ctb]", + "Maintainer": "Gabor Csardi ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "processx": { + "Package": "processx", + "Version": "3.8.6", + "Source": "Repository", + "Title": "Execute and Control System Processes", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0001-7098-9676\")), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"Ascent Digital Services\", role = c(\"cph\", \"fnd\")) )", + "Description": "Tools to run system processes in the background. It can check if a background process is running; wait on a background process to finish; get the exit status of finished processes; kill background processes. It can read the standard output and error of the processes, using non-blocking connections. 'processx' can poll a process for standard output or error, with a timeout. It can also poll several processes at once.", + "License": "MIT + file LICENSE", + "URL": "https://processx.r-lib.org, https://github.com/r-lib/processx", + "BugReports": "https://github.com/r-lib/processx/issues", + "Depends": [ + "R (>= 3.4.0)" + ], + "Imports": [ + "ps (>= 1.2.0)", + "R6", + "utils" + ], + "Suggests": [ + "callr (>= 3.7.3)", + "cli (>= 3.3.0)", + "codetools", + "covr", + "curl", + "debugme", + "parallel", + "rlang (>= 1.0.2)", + "testthat (>= 3.0.0)", + "webfakes", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1.9000", + "NeedsCompilation": "yes", + "Author": "Gábor Csárdi [aut, cre, cph] (), Winston Chang [aut], Posit Software, PBC [cph, fnd], Ascent Digital Services [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "prodlim": { + "Package": "prodlim", + "Version": "2025.04.28", + "Source": "Repository", + "Title": "Product-Limit Estimation for Censored Event History Analysis", + "Authors@R": "person(given = c(\"Thomas\", \"A.\"), family = \"Gerds\", role = c(\"aut\", \"cre\"), email = \"tag@biostat.ku.dk\")", + "Description": "Fast and user friendly implementation of nonparametric estimators for censored event history (survival) analysis. Kaplan-Meier and Aalen-Johansen method.", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "Rcpp (>= 0.11.5)", + "stats", + "rlang", + "data.table", + "grDevices", + "ggplot2", + "graphics", + "diagram", + "survival", + "KernSmooth", + "lava" + ], + "Suggests": [ + "tibble", + "pammtools", + "ggthemes" + ], + "LinkingTo": [ + "Rcpp" + ], + "Maintainer": "Thomas A. Gerds ", + "BugReports": "https://github.com/tagteam/prodlim/issues", + "License": "GPL (>= 2)", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Thomas A. Gerds [aut, cre]", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "progress": { + "Package": "progress", + "Version": "1.2.3", + "Source": "Repository", + "Title": "Terminal Progress Bars", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Rich\", \"FitzJohn\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Configurable Progress bars, they may include percentage, elapsed time, and/or the estimated completion time. They work in terminals, in 'Emacs' 'ESS', 'RStudio', 'Windows' 'Rgui' and the 'macOS' 'R.app'. The package also provides a 'C++' 'API', that works with or without 'Rcpp'.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/progress#readme, http://r-lib.github.io/progress/", + "BugReports": "https://github.com/r-lib/progress/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "crayon", + "hms", + "prettyunits", + "R6" + ], + "Suggests": [ + "Rcpp", + "testthat (>= 3.0.0)", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre], Rich FitzJohn [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "RSPM" + }, + "progressr": { + "Package": "progressr", + "Version": "0.18.0", + "Source": "Repository", + "Title": "An Inclusive, Unifying API for Progress Updates", + "Description": "A minimal, unifying API for scripts and packages to report progress updates from anywhere including when using parallel processing. The package is designed such that the developer can to focus on what progress should be reported on without having to worry about how to present it. The end user has full control of how, where, and when to render these progress updates, e.g. in the terminal using utils::txtProgressBar(), cli::cli_progress_bar(), in a graphical user interface using utils::winProgressBar(), tcltk::tkProgressBar() or shiny::withProgress(), via the speakers using beepr::beep(), or on a file system via the size of a file. Anyone can add additional, customized, progression handlers. The 'progressr' package uses R's condition framework for signaling progress updated. Because of this, progress can be reported from almost anywhere in R, e.g. from classical for and while loops, from map-reduce API:s like the lapply() family of functions, 'purrr', 'plyr', and 'foreach'. It will also work with parallel processing via the 'future' framework, e.g. future.apply::future_lapply(), furrr::future_map(), and 'foreach' with 'doFuture'. The package is compatible with Shiny applications.", + "Authors@R": "c(person(\"Henrik\", \"Bengtsson\", role = c(\"aut\", \"cre\", \"cph\"), email = \"henrikb@braju.com\", comment = c(ORCID = \"0000-0002-7579-5165\")))", + "License": "GPL (>= 3)", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "digest", + "utils" + ], + "Suggests": [ + "graphics", + "tcltk", + "beepr", + "cli", + "crayon", + "pbmcapply", + "progress", + "purrr", + "foreach", + "plyr", + "doFuture", + "future", + "future.apply", + "furrr", + "ntfy", + "RPushbullet", + "rstudioapi", + "shiny", + "commonmark", + "base64enc", + "tools" + ], + "VignetteBuilder": "progressr", + "Language": "en-US", + "Encoding": "UTF-8", + "URL": "https://progressr.futureverse.org, https://github.com/futureverse/progressr", + "BugReports": "https://github.com/futureverse/progressr/issues", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Henrik Bengtsson [aut, cre, cph] (ORCID: )", + "Maintainer": "Henrik Bengtsson ", + "Repository": "RSPM" + }, + "proxy": { + "Package": "proxy", + "Version": "0.4-29", + "Source": "Repository", + "Type": "Package", + "Title": "Distance and Similarity Measures", + "Authors@R": "c(person(given = \"David\", family = \"Meyer\", role = c(\"aut\", \"cre\"), email = \"David.Meyer@R-project.org\", comment = c(ORCID = \"0000-0002-5196-3048\")),\t person(given = \"Christian\", family = \"Buchta\", role = \"aut\"))", + "Description": "Provides an extensible framework for the efficient calculation of auto- and cross-proximities, along with implementations of the most popular ones.", + "Depends": [ + "R (>= 3.4.0)" + ], + "Imports": [ + "stats", + "utils" + ], + "Suggests": [ + "cba" + ], + "Collate": "registry.R database.R dist.R similarities.R dissimilarities.R util.R seal.R", + "License": "GPL-2 | GPL-3", + "NeedsCompilation": "yes", + "Author": "David Meyer [aut, cre] (ORCID: ), Christian Buchta [aut]", + "Maintainer": "David Meyer ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "ps": { + "Package": "ps", + "Version": "1.9.1", + "Source": "Repository", + "Title": "List, Query, Manipulate System Processes", + "Authors@R": "c( person(\"Jay\", \"Loden\", role = \"aut\"), person(\"Dave\", \"Daeschler\", role = \"aut\"), person(\"Giampaolo\", \"Rodola'\", role = \"aut\"), person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "List, query and manipulate all system processes, on 'Windows', 'Linux' and 'macOS'.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/ps, https://ps.r-lib.org/", + "BugReports": "https://github.com/r-lib/ps/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "callr", + "covr", + "curl", + "pillar", + "pingr", + "processx (>= 3.1.0)", + "R6", + "rlang", + "testthat (>= 3.0.0)", + "webfakes", + "withr" + ], + "Biarch": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Jay Loden [aut], Dave Daeschler [aut], Giampaolo Rodola' [aut], Gábor Csárdi [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "psych": { + "Package": "psych", + "Version": "2.5.6", + "Source": "Repository", + "Date": "2025-06-20", + "Title": "Procedures for Psychological, Psychometric, and Personality Research", + "Authors@R": "person(\"William\", \"Revelle\", role =c(\"aut\",\"cre\"), email=\"revelle@northwestern.edu\", comment=c(ORCID = \"0000-0003-4880-9610\") )", + "Description": "A general purpose toolbox developed originally for personality, psychometric theory and experimental psychology. Functions are primarily for multivariate analysis and scale construction using factor analysis, principal component analysis, cluster analysis and reliability analysis, although others provide basic descriptive statistics. Item Response Theory is done using factor analysis of tetrachoric and polychoric correlations. Functions for analyzing data at multiple levels include within and between group statistics, including correlations and factor analysis. Validation and cross validation of scales developed using basic machine learning algorithms are provided, as are functions for simulating and testing particular item and test structures. Several functions serve as a useful front end for structural equation modeling. Graphical displays of path diagrams, including mediation models, factor analysis and structural equation models are created using basic graphics. Some of the functions are written to support a book on psychometric theory as well as publications in personality research. For more information, see the web page.", + "License": "GPL (>= 2)", + "Imports": [ + "mnormt", + "parallel", + "stats", + "graphics", + "grDevices", + "methods", + "lattice", + "nlme", + "GPArotation" + ], + "Suggests": [ + "psychTools", + "lavaan", + "lme4", + "Rcsdp", + "graph", + "knitr", + "Rgraphviz" + ], + "LazyData": "yes", + "ByteCompile": "true", + "VignetteBuilder": "knitr", + "URL": "https://personality-project.org/r/psych/ https://personality-project.org/r/psych-manual.pdf", + "NeedsCompilation": "no", + "Author": "William Revelle [aut, cre] (ORCID: )", + "Maintainer": "William Revelle ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "purrr": { + "Package": "purrr", + "Version": "1.2.1", + "Source": "Repository", + "Title": "Functional Programming Tools", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"https://ror.org/03wc8by49\")) )", + "Description": "A complete and consistent functional programming toolkit for R.", + "License": "MIT + file LICENSE", + "URL": "https://purrr.tidyverse.org/, https://github.com/tidyverse/purrr", + "BugReports": "https://github.com/tidyverse/purrr/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.6.1)", + "lifecycle (>= 1.0.3)", + "magrittr (>= 1.5.0)", + "rlang (>= 1.1.1)", + "vctrs (>= 0.6.3)" + ], + "Suggests": [ + "carrier (>= 0.3.0)", + "covr", + "dplyr (>= 0.7.8)", + "httr", + "knitr", + "lubridate", + "mirai (>= 2.5.1)", + "rmarkdown", + "testthat (>= 3.0.0)", + "tibble", + "tidyselect" + ], + "LinkingTo": [ + "cli" + ], + "VignetteBuilder": "knitr", + "Biarch": "true", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate, tidyr", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "TRUE", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre] (ORCID: ), Lionel Henry [aut], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hadley Wickham ", + "Repository": "P3M" + }, + "quarto": { + "Package": "quarto", + "Version": "1.5.1", + "Source": "Repository", + "Title": "R Interface to 'Quarto' Markdown Publishing System", + "Authors@R": "c( person(\"JJ\", \"Allaire\", , \"jj@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-0174-9868\")), person(\"Christophe\", \"Dervieux\", , \"cderv@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"Gordon\", \"Woodhull\", role = \"ctb\") )", + "Description": "Convert R Markdown documents and 'Jupyter' notebooks to a variety of output formats using 'Quarto'.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/quarto-dev/quarto-r, https://quarto-dev.github.io/quarto-r/", + "BugReports": "https://github.com/quarto-dev/quarto-r/issues", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "cli", + "fs", + "htmltools", + "jsonlite", + "later", + "lifecycle", + "processx", + "rlang", + "rmarkdown", + "rstudioapi", + "tools", + "utils", + "xfun", + "yaml (>= 2.3.10)" + ], + "Suggests": [ + "bslib", + "callr", + "curl", + "dplyr", + "flextable", + "ggiraph", + "ggplot2", + "gt", + "heatmaply", + "kableExtra", + "knitr", + "palmerpenguins", + "patchwork", + "pkgload", + "plotly", + "rsconnect (>= 0.8.26)", + "testthat (>= 3.1.7)", + "thematic", + "tidyverse", + "tinytable", + "whoami", + "withr" + ], + "VignetteBuilder": "quarto", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "Quarto command line tool ().", + "NeedsCompilation": "no", + "Author": "JJ Allaire [aut] (ORCID: ), Christophe Dervieux [cre, aut] (ORCID: ), Posit Software, PBC [cph, fnd], Gordon Woodhull [ctb]", + "Maintainer": "Christophe Dervieux ", + "Repository": "RSPM" + }, + "ragg": { + "Package": "ragg", + "Version": "1.5.0", + "Source": "Repository", + "Type": "Package", + "Title": "Graphic Devices Based on AGG", + "Authors@R": "c( person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Maxim\", \"Shemanarev\", role = c(\"aut\", \"cph\"), comment = \"Author of AGG\"), person(\"Tony\", \"Juricic\", , \"tonygeek@yahoo.com\", role = c(\"ctb\", \"cph\"), comment = \"Contributor to AGG\"), person(\"Milan\", \"Marusinec\", , \"milan@marusinec.sk\", role = c(\"ctb\", \"cph\"), comment = \"Contributor to AGG\"), person(\"Spencer\", \"Garrett\", role = \"ctb\", comment = \"Contributor to AGG\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Maintainer": "Thomas Lin Pedersen ", + "Description": "Anti-Grain Geometry (AGG) is a high-quality and high-performance 2D drawing library. The 'ragg' package provides a set of graphic devices based on AGG to use as alternative to the raster devices provided through the 'grDevices' package.", + "License": "MIT + file LICENSE", + "URL": "https://ragg.r-lib.org, https://github.com/r-lib/ragg", + "BugReports": "https://github.com/r-lib/ragg/issues", + "Imports": [ + "systemfonts (>= 1.0.3)", + "textshaping (>= 0.3.0)" + ], + "Suggests": [ + "covr", + "graphics", + "grid", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "systemfonts", + "textshaping" + ], + "Config/build/compilation-database": "true", + "Config/Needs/website": "ggplot2, devoid, magick, bench, tidyr, ggridges, hexbin, sessioninfo, pkgdown, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-25", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "freetype2, libpng, libtiff, libjpeg, libwebp, libwebpmux", + "NeedsCompilation": "yes", + "Author": "Thomas Lin Pedersen [cre, aut] (ORCID: ), Maxim Shemanarev [aut, cph] (Author of AGG), Tony Juricic [ctb, cph] (Contributor to AGG), Milan Marusinec [ctb, cph] (Contributor to AGG), Spencer Garrett [ctb] (Contributor to AGG), Posit Software, PBC [cph, fnd] (ROR: )", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "ranger": { + "Package": "ranger", + "Version": "0.18.0", + "Source": "Repository", + "Type": "Package", + "Title": "A Fast Implementation of Random Forests", + "Date": "2026-01-15", + "Authors@R": "c( person(\"Marvin N.\", \"Wright\", email = \"cran@wrig.de\", role = c(\"aut\", \"cre\")), person(\"Stefan\", \"Wager\", role = \"ctb\"), person(\"Philipp\", \"Probst\", role = \"ctb\"))", + "Description": "A fast implementation of Random Forests, particularly suited for high dimensional data. Ensembles of classification, regression, survival and probability prediction trees are supported. Data from genome-wide association studies can be analyzed efficiently. In addition to data frames, datasets of class 'gwaa.data' (R package 'GenABEL') and 'dgCMatrix' (R package 'Matrix') can be directly analyzed.", + "License": "GPL-3", + "Imports": [ + "Rcpp (>= 0.11.2)", + "Matrix" + ], + "LinkingTo": [ + "Rcpp", + "RcppEigen" + ], + "Depends": [ + "R (>= 3.1)" + ], + "Suggests": [ + "survival", + "testthat" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "URL": "https://imbs-hl.github.io/ranger/, https://github.com/imbs-hl/ranger", + "BugReports": "https://github.com/imbs-hl/ranger/issues", + "NeedsCompilation": "yes", + "Author": "Marvin N. Wright [aut, cre], Stefan Wager [ctb], Philipp Probst [ctb]", + "Maintainer": "Marvin N. Wright ", + "Repository": "P3M" + }, + "rapidjsonr": { + "Package": "rapidjsonr", + "Version": "1.2.1", + "Source": "Repository", + "Type": "Package", + "Title": "'Rapidjson' C++ Header Files", + "Date": "2025-11-23", + "Authors@R": "c( person(\"David\", \"Cooley\", ,\"dcooley@symbolix.com.au\", role = c(\"aut\", \"cre\")), person(\"Milo\", \"Yip\", , role = \"ctb\", comment = \"Author of c++ rapidjson library, provided through THL A29 Limited, a Tencent company\"), person(\"Alexander\", \"Chemeris\", role = \"ctb\", comment = \"Author of c++ msinttypes library\") )", + "Description": "Provides JSON parsing capability through the 'Rapidjson' 'C++' header-only library.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "SystemRequirements": "GNU make", + "NeedsCompilation": "no", + "Author": "David Cooley [aut, cre], Milo Yip [ctb] (Author of c++ rapidjson library, provided through THL A29 Limited, a Tencent company), Alexander Chemeris [ctb] (Author of c++ msinttypes library)", + "Maintainer": "David Cooley ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "rappdirs": { + "Package": "rappdirs", + "Version": "0.3.4", + "Source": "Repository", + "Type": "Package", + "Title": "Application Directories: Determine Where to Save Data, Caches, and Logs", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"trl\", \"cre\", \"cph\")), person(\"Sridhar\", \"Ratnakumar\", role = \"aut\"), person(\"Trent\", \"Mick\", role = \"aut\"), person(\"ActiveState\", role = \"cph\", comment = \"R/appdir.r, R/cache.r, R/data.r, R/log.r translated from appdirs\"), person(\"Eddy\", \"Petrisor\", role = \"ctb\"), person(\"Trevor\", \"Davis\", role = c(\"trl\", \"aut\"), comment = c(ORCID = \"0000-0001-6341-4639\")), person(\"Gabor\", \"Csardi\", role = \"ctb\"), person(\"Gregory\", \"Jefferis\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "An easy way to determine which directories on the users computer you should use to save data, caches and logs. A port of Python's 'Appdirs' () to R.", + "License": "MIT + file LICENSE", + "URL": "https://rappdirs.r-lib.org, https://github.com/r-lib/rappdirs", + "BugReports": "https://github.com/r-lib/rappdirs/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Suggests": [ + "covr", + "roxygen2", + "testthat (>= 3.2.0)", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-05-05", + "Copyright": "Original python appdirs module copyright (c) 2010 ActiveState Software Inc. R port copyright Hadley Wickham, Posit, PBC. See file LICENSE for details.", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [trl, cre, cph], Sridhar Ratnakumar [aut], Trent Mick [aut], ActiveState [cph] (R/appdir.r, R/cache.r, R/data.r, R/log.r translated from appdirs), Eddy Petrisor [ctb], Trevor Davis [trl, aut] (ORCID: ), Gabor Csardi [ctb], Gregory Jefferis [ctb], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hadley Wickham ", + "Repository": "P3M" + }, + "raster": { + "Package": "raster", + "Version": "3.6-32", + "Source": "Repository", + "Type": "Package", + "Title": "Geographic Data Analysis and Modeling", + "Date": "2025-03-27", + "Imports": [ + "Rcpp", + "methods", + "terra (>= 1.8-5)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Depends": [ + "sp (>= 1.4-5)", + "R (>= 3.5.0)" + ], + "Suggests": [ + "ncdf4", + "igraph", + "tcltk", + "parallel", + "rasterVis", + "MASS", + "sf", + "tinytest", + "gstat", + "fields", + "exactextractr" + ], + "Description": "Reading, writing, manipulating, analyzing and modeling of spatial data. This package has been superseded by the \"terra\" package .", + "License": "GPL (>= 3)", + "URL": "https://rspatial.org/raster", + "BugReports": "https://github.com/rspatial/raster/issues/", + "Authors@R": "c( person(\"Robert J.\", \"Hijmans\", role = c(\"cre\", \"aut\"), email = \"r.hijmans@gmail.com\", comment = c(ORCID = \"0000-0001-5872-2872\")), person(\"Jacob\", \"van Etten\", role = \"ctb\"), person(\"Michael\", \"Sumner\", role = \"ctb\"), person(\"Joe\", \"Cheng\", role = \"ctb\"), person(\"Dan\", \"Baston\", role = \"ctb\"), person(\"Andrew\", \"Bevan\", role = \"ctb\"), person(\"Roger\", \"Bivand\", role = \"ctb\"), person(\"Lorenzo\", \"Busetto\", role = \"ctb\"), person(\"Mort\", \"Canty\", role = \"ctb\"), person(\"Ben\", \"Fasoli\", role = \"ctb\"), person(\"David\", \"Forrest\", role = \"ctb\"), person(\"Aniruddha\", \"Ghosh\", role = \"ctb\"), person(\"Duncan\", \"Golicher\", role = \"ctb\"), person(\"Josh\", \"Gray\", role = \"ctb\"), person(\"Jonathan A.\", \"Greenberg\", role = \"ctb\"), person(\"Paul\", \"Hiemstra\", role = \"ctb\"), person(\"Kassel\", \"Hingee\", role = \"ctb\"), person(\"Alex\", \"Ilich\", role = \"ctb\"), person(\"Institute for Mathematics Applied Geosciences\", role=\"cph\"), person(\"Charles\", \"Karney\", role = \"ctb\"), person(\"Matteo\", \"Mattiuzzi\", role = \"ctb\"), person(\"Steven\", \"Mosher\", role = \"ctb\"), person(\"Babak\", \"Naimi\", role = \"ctb\"),\t person(\"Jakub\", \"Nowosad\", role = \"ctb\"), person(\"Edzer\", \"Pebesma\", role = \"ctb\"), person(\"Oscar\", \"Perpinan Lamigueiro\", role = \"ctb\"), person(\"Etienne B.\", \"Racine\", role = \"ctb\"), person(\"Barry\", \"Rowlingson\", role = \"ctb\"), person(\"Ashton\", \"Shortridge\", role = \"ctb\"), person(\"Bill\", \"Venables\", role = \"ctb\"), person(\"Rafael\", \"Wueest\", role = \"ctb\") )", + "NeedsCompilation": "yes", + "Author": "Robert J. Hijmans [cre, aut] (), Jacob van Etten [ctb], Michael Sumner [ctb], Joe Cheng [ctb], Dan Baston [ctb], Andrew Bevan [ctb], Roger Bivand [ctb], Lorenzo Busetto [ctb], Mort Canty [ctb], Ben Fasoli [ctb], David Forrest [ctb], Aniruddha Ghosh [ctb], Duncan Golicher [ctb], Josh Gray [ctb], Jonathan A. Greenberg [ctb], Paul Hiemstra [ctb], Kassel Hingee [ctb], Alex Ilich [ctb], Institute for Mathematics Applied Geosciences [cph], Charles Karney [ctb], Matteo Mattiuzzi [ctb], Steven Mosher [ctb], Babak Naimi [ctb], Jakub Nowosad [ctb], Edzer Pebesma [ctb], Oscar Perpinan Lamigueiro [ctb], Etienne B. Racine [ctb], Barry Rowlingson [ctb], Ashton Shortridge [ctb], Bill Venables [ctb], Rafael Wueest [ctb]", + "Maintainer": "Robert J. Hijmans ", + "Repository": "P3M", + "Encoding": "UTF-8" + }, + "reactR": { + "Package": "reactR", + "Version": "0.6.1", + "Source": "Repository", + "Type": "Package", + "Title": "React Helpers", + "Date": "2024-09-14", + "Authors@R": "c( person( \"Facebook\", \"Inc\" , role = c(\"aut\", \"cph\") , comment = \"React library in lib, https://reactjs.org/; see AUTHORS for full list of contributors\" ), person( \"Michel\",\"Weststrate\", , role = c(\"aut\", \"cph\") , comment = \"mobx library in lib, https://github.com/mobxjs\" ), person( \"Kent\", \"Russell\" , role = c(\"aut\", \"cre\") , comment = \"R interface\" , email = \"kent.russell@timelyportfolio.com\" ), person( \"Alan\", \"Dipert\" , role = c(\"aut\") , comment = \"R interface\" , email = \"alan@rstudio.com\" ), person( \"Greg\", \"Lin\" , role = c(\"aut\") , comment = \"R interface\" , email = \"glin@glin.io\" ) )", + "Maintainer": "Kent Russell ", + "Description": "Make it easy to use 'React' in R with 'htmlwidget' scaffolds, helper dependency functions, an embedded 'Babel' 'transpiler', and examples.", + "URL": "https://github.com/react-R/reactR", + "BugReports": "https://github.com/react-R/reactR/issues", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Imports": [ + "htmltools" + ], + "Suggests": [ + "htmlwidgets (>= 1.5.3)", + "rmarkdown", + "shiny", + "V8", + "knitr", + "usethis", + "jsonlite" + ], + "RoxygenNote": "7.3.2", + "VignetteBuilder": "knitr", + "NeedsCompilation": "no", + "Author": "Facebook Inc [aut, cph] (React library in lib, https://reactjs.org/; see AUTHORS for full list of contributors), Michel Weststrate [aut, cph] (mobx library in lib, https://github.com/mobxjs), Kent Russell [aut, cre] (R interface), Alan Dipert [aut] (R interface), Greg Lin [aut] (R interface)", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "reactable": { + "Package": "reactable", + "Version": "0.4.5", + "Source": "Repository", + "Type": "Package", + "Title": "Interactive Data Tables for R", + "Authors@R": "c( person(\"Greg\", \"Lin\", email = \"glin@glin.io\", role = c(\"aut\", \"cre\")), person(\"Tanner\", \"Linsley\", role = c(\"ctb\", \"cph\"), comment = \"React Table library\"), person(family = \"Emotion team and other contributors\", role = c(\"ctb\", \"cph\"), comment = \"Emotion library\"), person(\"Kent\", \"Russell\", role = c(\"ctb\", \"cph\"), comment = \"reactR package\"), person(\"Ramnath\", \"Vaidyanathan\", role = c(\"ctb\", \"cph\"), comment = \"htmlwidgets package\"), person(\"Joe\", \"Cheng\", role = c(\"ctb\", \"cph\"), comment = \"htmlwidgets package\"), person(\"JJ\", \"Allaire\", role = c(\"ctb\", \"cph\"), comment = \"htmlwidgets package\"), person(\"Yihui\", \"Xie\", role = c(\"ctb\", \"cph\"), comment = \"htmlwidgets package\"), person(\"Kenton\", \"Russell\", role = c(\"ctb\", \"cph\"), comment = \"htmlwidgets package\"), person(family = \"Facebook, Inc. and its affiliates\", role = c(\"ctb\", \"cph\"), comment = \"React library\"), person(family = \"FormatJS\", role = c(\"ctb\", \"cph\"), comment = \"FormatJS libraries\"), person(family = \"Feross Aboukhadijeh, and other contributors\", role = c(\"ctb\", \"cph\"), comment = \"buffer library\"), person(\"Roman\", \"Shtylman\", role = c(\"ctb\", \"cph\"), comment = \"process library\"), person(\"James\", \"Halliday\", role = c(\"ctb\", \"cph\"), comment = \"stream-browserify library\"), person(family = \"Posit Software, PBC\", role = c(\"fnd\", \"cph\")) )", + "Description": "Interactive data tables for R, based on the 'React Table' JavaScript library. Provides an HTML widget that can be used in 'R Markdown' or 'Quarto' documents, 'Shiny' applications, or viewed from an R console.", + "License": "MIT + file LICENSE", + "URL": "https://glin.github.io/reactable/, https://github.com/glin/reactable", + "BugReports": "https://github.com/glin/reactable/issues", + "Depends": [ + "R (>= 3.1)" + ], + "Imports": [ + "digest", + "htmltools (>= 0.5.2)", + "htmlwidgets (>= 1.5.3)", + "jsonlite", + "reactR" + ], + "Suggests": [ + "covr", + "crosstalk", + "dplyr", + "fontawesome", + "knitr", + "leaflet", + "MASS", + "rmarkdown", + "shiny", + "sparkline", + "testthat", + "tippy", + "V8" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.2.1", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Greg Lin [aut, cre], Tanner Linsley [ctb, cph] (React Table library), Emotion team and other contributors [ctb, cph] (Emotion library), Kent Russell [ctb, cph] (reactR package), Ramnath Vaidyanathan [ctb, cph] (htmlwidgets package), Joe Cheng [ctb, cph] (htmlwidgets package), JJ Allaire [ctb, cph] (htmlwidgets package), Yihui Xie [ctb, cph] (htmlwidgets package), Kenton Russell [ctb, cph] (htmlwidgets package), Facebook, Inc. and its affiliates [ctb, cph] (React library), FormatJS [ctb, cph] (FormatJS libraries), Feross Aboukhadijeh, and other contributors [ctb, cph] (buffer library), Roman Shtylman [ctb, cph] (process library), James Halliday [ctb, cph] (stream-browserify library), Posit Software, PBC [fnd, cph]", + "Maintainer": "Greg Lin ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "readr": { + "Package": "readr", + "Version": "2.1.6", + "Source": "Repository", + "Title": "Read Rectangular Text Data", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Romain\", \"Francois\", role = \"ctb\"), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Shelby\", \"Bearrows\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"https://github.com/mandreyel/\", role = \"cph\", comment = \"mio library\"), person(\"Jukka\", \"Jylänki\", role = c(\"ctb\", \"cph\"), comment = \"grisu3 implementation\"), person(\"Mikkel\", \"Jørgensen\", role = c(\"ctb\", \"cph\"), comment = \"grisu3 implementation\") )", + "Description": "The goal of 'readr' is to provide a fast and friendly way to read rectangular data (like 'csv', 'tsv', and 'fwf'). It is designed to flexibly parse many types of data found in the wild, while still cleanly failing when data unexpectedly changes.", + "License": "MIT + file LICENSE", + "URL": "https://readr.tidyverse.org, https://github.com/tidyverse/readr", + "BugReports": "https://github.com/tidyverse/readr/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cli (>= 3.2.0)", + "clipr", + "crayon", + "hms (>= 0.4.1)", + "lifecycle (>= 0.2.0)", + "methods", + "R6", + "rlang", + "tibble", + "utils", + "vroom (>= 1.6.0)" + ], + "Suggests": [ + "covr", + "curl", + "datasets", + "knitr", + "rmarkdown", + "spelling", + "stringi", + "testthat (>= 3.2.0)", + "tzdb (>= 0.1.1)", + "waldo", + "withr", + "xml2" + ], + "LinkingTo": [ + "cpp11", + "tzdb (>= 0.1.1)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "false", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut], Jim Hester [aut], Romain Francois [ctb], Jennifer Bryan [aut, cre] (ORCID: ), Shelby Bearrows [ctb], Posit Software, PBC [cph, fnd], https://github.com/mandreyel/ [cph] (mio library), Jukka Jylänki [ctb, cph] (grisu3 implementation), Mikkel Jørgensen [ctb, cph] (grisu3 implementation)", + "Maintainer": "Jennifer Bryan ", + "Repository": "RSPM" + }, + "readxl": { + "Package": "readxl", + "Version": "1.4.5", + "Source": "Repository", + "Title": "Read Excel Files", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\"), comment = \"Copyright holder of all R code and all C/C++ code without explicit copyright attribution\"), person(\"Marcin\", \"Kalicinski\", role = c(\"ctb\", \"cph\"), comment = \"Author of included RapidXML code\"), person(\"Komarov Valery\", role = c(\"ctb\", \"cph\"), comment = \"Author of included libxls code\"), person(\"Christophe Leitienne\", role = c(\"ctb\", \"cph\"), comment = \"Author of included libxls code\"), person(\"Bob Colbert\", role = c(\"ctb\", \"cph\"), comment = \"Author of included libxls code\"), person(\"David Hoerl\", role = c(\"ctb\", \"cph\"), comment = \"Author of included libxls code\"), person(\"Evan Miller\", role = c(\"ctb\", \"cph\"), comment = \"Author of included libxls code\") )", + "Description": "Import excel files into R. Supports '.xls' via the embedded 'libxls' C library and '.xlsx' via the embedded 'RapidXML' C++ library . Works on Windows, Mac and Linux without external dependencies.", + "License": "MIT + file LICENSE", + "URL": "https://readxl.tidyverse.org, https://github.com/tidyverse/readxl", + "BugReports": "https://github.com/tidyverse/readxl/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cellranger", + "tibble (>= 2.0.1)", + "utils" + ], + "Suggests": [ + "covr", + "knitr", + "rmarkdown", + "testthat (>= 3.1.6)", + "withr" + ], + "LinkingTo": [ + "cpp11 (>= 0.4.0)", + "progress" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate, tidyverse", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Note": "libxls v1.6.3 c199d13", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut] (), Jennifer Bryan [aut, cre] (), Posit, PBC [cph, fnd] (Copyright holder of all R code and all C/C++ code without explicit copyright attribution), Marcin Kalicinski [ctb, cph] (Author of included RapidXML code), Komarov Valery [ctb, cph] (Author of included libxls code), Christophe Leitienne [ctb, cph] (Author of included libxls code), Bob Colbert [ctb, cph] (Author of included libxls code), David Hoerl [ctb, cph] (Author of included libxls code), Evan Miller [ctb, cph] (Author of included libxls code)", + "Maintainer": "Jennifer Bryan ", + "Repository": "RSPM" + }, + "recipes": { + "Package": "recipes", + "Version": "1.3.1", + "Source": "Repository", + "Title": "Preprocessing and Feature Engineering Steps for Modeling", + "Authors@R": "c( person(\"Max\", \"Kuhn\", , \"max@posit.co\", role = c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Emil\", \"Hvitfeldt\", , \"emil.hvitfeldt@posit.co\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "A recipe prepares your data for modeling. We provide an extensible framework for pipeable sequences of feature engineering steps provides preprocessing tools to be applied to data. Statistical parameters for the steps can be estimated from an initial data set and then applied to other data sets. The resulting processed output can then be used as inputs for statistical or machine learning models.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/tidymodels/recipes, https://recipes.tidymodels.org/", + "BugReports": "https://github.com/tidymodels/recipes/issues", + "Depends": [ + "dplyr (>= 1.1.0)", + "R (>= 4.1)" + ], + "Imports": [ + "cli", + "clock (>= 0.6.1)", + "generics (>= 0.1.2)", + "glue", + "gower", + "hardhat (>= 1.4.1)", + "ipred (>= 0.9-12)", + "lifecycle (>= 1.0.3)", + "lubridate (>= 1.8.0)", + "magrittr", + "Matrix", + "purrr (>= 1.0.0)", + "rlang (>= 1.1.0)", + "sparsevctrs (>= 0.3.3)", + "stats", + "tibble", + "tidyr (>= 1.0.0)", + "tidyselect (>= 1.2.0)", + "timeDate", + "utils", + "vctrs (>= 0.5.0)", + "withr" + ], + "Suggests": [ + "covr", + "ddalpha", + "dials (>= 1.2.0)", + "ggplot2", + "igraph", + "kernlab", + "knitr", + "methods", + "modeldata (>= 0.1.1)", + "parsnip (>= 1.2.0)", + "RANN", + "RcppRoll", + "rmarkdown", + "rpart", + "rsample", + "RSpectra", + "splines2", + "testthat (>= 3.0.0)", + "workflows", + "xml2" + ], + "VignetteBuilder": "knitr", + "RdMacros": "lifecycle", + "Config/Needs/website": "tidyverse/tidytemplate, rmarkdown", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-23", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Max Kuhn [aut, cre], Hadley Wickham [aut], Emil Hvitfeldt [aut], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Max Kuhn ", + "Repository": "RSPM" + }, + "rematch": { + "Package": "rematch", + "Version": "2.0.0", + "Source": "Repository", + "Title": "Match Regular Expressions with a Nicer 'API'", + "Author": "Gabor Csardi", + "Maintainer": "Gabor Csardi ", + "Description": "A small wrapper on 'regexpr' to extract the matches and captured groups from the match of a regular expression to a character vector.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/gaborcsardi/rematch", + "BugReports": "https://github.com/gaborcsardi/rematch/issues", + "RoxygenNote": "5.0.1.9000", + "Suggests": [ + "covr", + "testthat" + ], + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Repository": "RSPM" + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Title": "Tidy Output from Regular Expression Matching", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", email = \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Matthew\", \"Lincoln\", email = \"matthew.d.lincoln@gmail.com\", role = c(\"ctb\")))", + "Description": "Wrappers on 'regexpr' and 'gregexpr' to return the match results in tidy data frames.", + "License": "MIT + file LICENSE", + "LazyData": "true", + "URL": "https://github.com/r-lib/rematch2#readme", + "BugReports": "https://github.com/r-lib/rematch2/issues", + "RoxygenNote": "7.1.0", + "Imports": [ + "tibble" + ], + "Suggests": [ + "covr", + "testthat" + ], + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre], Matthew Lincoln [ctb]", + "Maintainer": "Gábor Csárdi ", + "Repository": "RSPM" + }, + "renv": { + "Package": "renv", + "Version": "1.1.5", + "Source": "Repository", + "Type": "Package", + "Title": "Project Environments", + "Authors@R": "c( person(\"Kevin\", \"Ushey\", role = c(\"aut\", \"cre\"), email = \"kevin@rstudio.com\", comment = c(ORCID = \"0000-0003-2880-7407\")), person(\"Hadley\", \"Wickham\", role = c(\"aut\"), email = \"hadley@rstudio.com\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A dependency management toolkit for R. Using 'renv', you can create and manage project-local R libraries, save the state of these libraries to a 'lockfile', and later restore your library as required. Together, these tools can help make your projects more isolated, portable, and reproducible.", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/renv/, https://github.com/rstudio/renv", + "BugReports": "https://github.com/rstudio/renv/issues", + "Imports": [ + "utils" + ], + "Suggests": [ + "BiocManager", + "cli", + "compiler", + "covr", + "cpp11", + "devtools", + "generics", + "gitcreds", + "jsonlite", + "jsonvalidate", + "knitr", + "miniUI", + "modules", + "packrat", + "pak", + "R6", + "remotes", + "reticulate", + "rmarkdown", + "rstudioapi", + "shiny", + "testthat", + "uuid", + "waldo", + "yaml", + "webfakes" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "bioconductor,python,install,restore,snapshot,retrieve,remotes", + "NeedsCompilation": "no", + "Author": "Kevin Ushey [aut, cre] (ORCID: ), Hadley Wickham [aut] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Kevin Ushey ", + "Repository": "RSPM" + }, + "reprex": { + "Package": "reprex", + "Version": "2.1.1", + "Source": "Repository", + "Title": "Prepare Reproducible Example Code via the Clipboard", + "Authors@R": "c( person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Jim\", \"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"David\", \"Robinson\", , \"admiral.david@gmail.com\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Christophe\", \"Dervieux\", , \"cderv@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Convenience wrapper that uses the 'rmarkdown' package to render small snippets of code to target formats that include both code and output. The goal is to encourage the sharing of small, reproducible, and runnable examples on code-oriented websites, such as and , or in email. The user's clipboard is the default source of input code and the default target for rendered output. 'reprex' also extracts clean, runnable R code from various common formats, such as copy/paste from an R session.", + "License": "MIT + file LICENSE", + "URL": "https://reprex.tidyverse.org, https://github.com/tidyverse/reprex", + "BugReports": "https://github.com/tidyverse/reprex/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "callr (>= 3.6.0)", + "cli (>= 3.2.0)", + "clipr (>= 0.4.0)", + "fs", + "glue", + "knitr (>= 1.23)", + "lifecycle", + "rlang (>= 1.0.0)", + "rmarkdown", + "rstudioapi", + "utils", + "withr (>= 2.3.0)" + ], + "Suggests": [ + "covr", + "fortunes", + "miniUI", + "rprojroot", + "sessioninfo", + "shiny", + "spelling", + "styler (>= 1.2.0)", + "testthat (>= 3.2.1)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "dplyr, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "TRUE", + "Config/testthat/start-first": "knitr-options, venues, reprex", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.2", + "SystemRequirements": "pandoc (>= 2.0) - https://pandoc.org/", + "NeedsCompilation": "no", + "Author": "Jennifer Bryan [aut, cre] (), Jim Hester [aut] (), David Robinson [aut], Hadley Wickham [aut] (), Christophe Dervieux [aut] (), Posit Software, PBC [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "RSPM" + }, + "reshape2": { + "Package": "reshape2", + "Version": "1.4.5", + "Source": "Repository", + "Title": "Flexibly Reshape Data: A Reboot of the Reshape Package", + "Authors@R": "person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\"))", + "Description": "Flexibly restructure and aggregate data using just two functions: melt and 'dcast' (or 'acast').", + "License": "MIT + file LICENSE", + "URL": "https://github.com/hadley/reshape", + "BugReports": "https://github.com/hadley/reshape/issues", + "Depends": [ + "R (>= 3.1)" + ], + "Imports": [ + "plyr (>= 1.8.1)", + "Rcpp", + "stringr" + ], + "Suggests": [ + "covr", + "lattice", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre]", + "Maintainer": "Hadley Wickham ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "reticulate": { + "Package": "reticulate", + "Version": "1.44.1", + "Source": "Repository", + "Type": "Package", + "Title": "Interface to 'Python'", + "Authors@R": "c( person(\"Tomasz\", \"Kalinowski\", role = c(\"ctb\", \"cre\"), email = \"tomasz@posit.co\"), person(\"Kevin\", \"Ushey\", role = c(\"aut\"), email = \"kevin@posit.co\"), person(\"JJ\", \"Allaire\", role = c(\"aut\"), email = \"jj@posit.co\"), person(\"RStudio\", role = c(\"cph\", \"fnd\")), person(\"Yuan\", \"Tang\", role = c(\"aut\", \"cph\"), email = \"terrytangyuan@gmail.com\", comment = c(ORCID = \"0000-0001-5243-233X\")), person(\"Dirk\", \"Eddelbuettel\", role = c(\"ctb\", \"cph\"), email = \"edd@debian.org\"), person(\"Bryan\", \"Lewis\", role = c(\"ctb\", \"cph\"), email = \"blewis@illposed.net\"), person(\"Sigrid\", \"Keydana\", role = c(\"ctb\"), email = \"sigrid@posit.co\"), person(\"Ryan\", \"Hafen\", role = c(\"ctb\", \"cph\"), email = \"rhafen@gmail.com\"), person(\"Marcus\", \"Geelnard\", role = c(\"ctb\", \"cph\"), comment = \"TinyThread library, http://tinythreadpp.bitsnbites.eu/\") )", + "Description": "Interface to 'Python' modules, classes, and functions. When calling into 'Python', R data types are automatically converted to their equivalent 'Python' types. When values are returned from 'Python' to R they are converted back to R types. Compatible with all versions of 'Python' >= 2.7.", + "License": "Apache License 2.0", + "URL": "https://rstudio.github.io/reticulate/, https://github.com/rstudio/reticulate", + "BugReports": "https://github.com/rstudio/reticulate/issues", + "SystemRequirements": "Python (>= 2.7.0)", + "Encoding": "UTF-8", + "Depends": [ + "R (>= 3.5)" + ], + "Imports": [ + "Matrix", + "Rcpp (>= 1.0.7)", + "RcppTOML", + "graphics", + "here", + "jsonlite", + "methods", + "png", + "rappdirs", + "utils", + "rlang", + "withr" + ], + "Suggests": [ + "callr", + "knitr", + "glue", + "cli", + "rmarkdown", + "pillar", + "testthat" + ], + "LinkingTo": [ + "Rcpp" + ], + "RoxygenNote": "7.3.3", + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "NeedsCompilation": "yes", + "Author": "Tomasz Kalinowski [ctb, cre], Kevin Ushey [aut], JJ Allaire [aut], RStudio [cph, fnd], Yuan Tang [aut, cph] (ORCID: ), Dirk Eddelbuettel [ctb, cph], Bryan Lewis [ctb, cph], Sigrid Keydana [ctb], Ryan Hafen [ctb, cph], Marcus Geelnard [ctb, cph] (TinyThread library, http://tinythreadpp.bitsnbites.eu/)", + "Maintainer": "Tomasz Kalinowski ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "rlang": { + "Package": "rlang", + "Version": "1.1.7", + "Source": "Repository", + "Title": "Functions for Base Types and Core R and 'Tidyverse' Features", + "Description": "A toolbox for working with base types, core R features like the condition system, and core 'Tidyverse' features like tidy evaluation.", + "Authors@R": "c( person(\"Lionel\", \"Henry\", ,\"lionel@posit.co\", c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", ,\"hadley@posit.co\", \"aut\"), person(given = \"mikefc\", email = \"mikefc@coolbutuseless.com\", role = \"cph\", comment = \"Hash implementation based on Mike's xxhashlite\"), person(given = \"Yann\", family = \"Collet\", role = \"cph\", comment = \"Author of the embedded xxHash library\"), person(given = \"Posit, PBC\", role = c(\"cph\", \"fnd\")) )", + "License": "MIT + file LICENSE", + "ByteCompile": "true", + "Biarch": "true", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "cli (>= 3.1.0)", + "covr", + "crayon", + "desc", + "fs", + "glue", + "knitr", + "magrittr", + "methods", + "pillar", + "pkgload", + "rmarkdown", + "stats", + "testthat (>= 3.2.0)", + "tibble", + "usethis", + "vctrs (>= 0.2.3)", + "withr" + ], + "Enhances": [ + "winch" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "URL": "https://rlang.r-lib.org, https://github.com/r-lib/rlang", + "BugReports": "https://github.com/r-lib/rlang/issues", + "Config/build/compilation-database": "true", + "Config/testthat/edition": "3", + "Config/Needs/website": "dplyr, tidyverse/tidytemplate", + "NeedsCompilation": "yes", + "Author": "Lionel Henry [aut, cre], Hadley Wickham [aut], mikefc [cph] (Hash implementation based on Mike's xxhashlite), Yann Collet [cph] (Author of the embedded xxHash library), Posit, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "https://packagemanager.posit.co/cran/latest" + }, + "rmapshaper": { + "Package": "rmapshaper", + "Version": "0.6.0", + "Source": "Repository", + "Type": "Package", + "Title": "Client for 'mapshaper' for 'Geospatial' Operations", + "Authors@R": "c(person(given = \"Andy\", family = \"Teucher\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-7840-692X\"), email = \"andy.teucher@gmail.com\"), person(given = \"Kenton\", family = \"Russell\", role = \"aut\", email = \"kent.russell@timelyportfolio.com\", comment = \"JavaScript support\"), person(given = \"Matthew\", family = \"Bloch\", role = \"cph\", comment = \"mapshaper Javascript library\"))", + "Description": "Edit and simplify 'geojson', 'Spatial', and 'sf' objects. This is wrapper around the 'mapshaper' 'JavaScript' library by Matthew Bloch to perform topologically-aware polygon simplification, as well as other operations such as clipping, erasing, dissolving, and converting 'multi-part' to 'single-part' geometries.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/ateucher/rmapshaper, http://andyteucher.ca/rmapshaper/", + "BugReports": "https://github.com/ateucher/rmapshaper/issues", + "Imports": [ + "methods", + "geojsonsf (>= 2.0.5)", + "jsonify (>= 1.2.3)", + "readr (>= 2.1.0)", + "sf (>= 1.0.0)", + "sp (>= 1.4-0)", + "V8 (>= 6.0.0)" + ], + "Suggests": [ + "knitr", + "magrittr", + "rmarkdown", + "testthat (>= 3.0.0)", + "jsonlite", + "covr", + "units", + "withr" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "TRUE", + "NeedsCompilation": "no", + "Author": "Andy Teucher [aut, cre] (ORCID: ), Kenton Russell [aut] (JavaScript support), Matthew Bloch [cph] (mapshaper Javascript library)", + "Maintainer": "Andy Teucher ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "rmarkdown": { + "Package": "rmarkdown", + "Version": "2.30", + "Source": "Repository", + "Type": "Package", + "Title": "Dynamic Documents for R", + "Authors@R": "c( person(\"JJ\", \"Allaire\", , \"jj@posit.co\", role = \"aut\"), person(\"Yihui\", \"Xie\", , \"xie@yihui.name\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Christophe\", \"Dervieux\", , \"cderv@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Jonathan\", \"McPherson\", , \"jonathan@posit.co\", role = \"aut\"), person(\"Javier\", \"Luraschi\", role = \"aut\"), person(\"Kevin\", \"Ushey\", , \"kevin@posit.co\", role = \"aut\"), person(\"Aron\", \"Atkins\", , \"aron@posit.co\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\"), person(\"Richard\", \"Iannone\", , \"rich@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"Andrew\", \"Dunning\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0464-5036\")), person(\"Atsushi\", \"Yasumoto\", role = c(\"ctb\", \"cph\"), comment = c(ORCID = \"0000-0002-8335-495X\", cph = \"Number sections Lua filter\")), person(\"Barret\", \"Schloerke\", role = \"ctb\"), person(\"Carson\", \"Sievert\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Devon\", \"Ryan\", , \"dpryan79@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8549-0971\")), person(\"Frederik\", \"Aust\", , \"frederik.aust@uni-koeln.de\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4900-788X\")), person(\"Jeff\", \"Allen\", , \"jeff@posit.co\", role = \"ctb\"), person(\"JooYoung\", \"Seo\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4064-6012\")), person(\"Malcolm\", \"Barrett\", role = \"ctb\"), person(\"Rob\", \"Hyndman\", , \"Rob.Hyndman@monash.edu\", role = \"ctb\"), person(\"Romain\", \"Lesur\", role = \"ctb\"), person(\"Roy\", \"Storey\", role = \"ctb\"), person(\"Ruben\", \"Arslan\", , \"ruben.arslan@uni-goettingen.de\", role = \"ctb\"), person(\"Sergio\", \"Oller\", role = \"ctb\"), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(, \"jQuery UI contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery UI library; authors listed in inst/rmd/h/jqueryui/AUTHORS.txt\"), person(\"Mark\", \"Otto\", role = \"ctb\", comment = \"Bootstrap library\"), person(\"Jacob\", \"Thornton\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"), person(\"Alexander\", \"Farkas\", role = c(\"ctb\", \"cph\"), comment = \"html5shiv library\"), person(\"Scott\", \"Jehl\", role = c(\"ctb\", \"cph\"), comment = \"Respond.js library\"), person(\"Ivan\", \"Sagalaev\", role = c(\"ctb\", \"cph\"), comment = \"highlight.js library\"), person(\"Greg\", \"Franko\", role = c(\"ctb\", \"cph\"), comment = \"tocify library\"), person(\"John\", \"MacFarlane\", role = c(\"ctb\", \"cph\"), comment = \"Pandoc templates\"), person(, \"Google, Inc.\", role = c(\"ctb\", \"cph\"), comment = \"ioslides library\"), person(\"Dave\", \"Raggett\", role = \"ctb\", comment = \"slidy library\"), person(, \"W3C\", role = \"cph\", comment = \"slidy library\"), person(\"Dave\", \"Gandy\", role = c(\"ctb\", \"cph\"), comment = \"Font-Awesome\"), person(\"Ben\", \"Sperry\", role = \"ctb\", comment = \"Ionicons\"), person(, \"Drifty\", role = \"cph\", comment = \"Ionicons\"), person(\"Aidan\", \"Lister\", role = c(\"ctb\", \"cph\"), comment = \"jQuery StickyTabs\"), person(\"Benct Philip\", \"Jonsson\", role = c(\"ctb\", \"cph\"), comment = \"pagebreak Lua filter\"), person(\"Albert\", \"Krewinkel\", role = c(\"ctb\", \"cph\"), comment = \"pagebreak Lua filter\") )", + "Description": "Convert R Markdown documents into a variety of formats.", + "License": "GPL-3", + "URL": "https://github.com/rstudio/rmarkdown, https://pkgs.rstudio.com/rmarkdown/", + "BugReports": "https://github.com/rstudio/rmarkdown/issues", + "Depends": [ + "R (>= 3.0)" + ], + "Imports": [ + "bslib (>= 0.2.5.1)", + "evaluate (>= 0.13)", + "fontawesome (>= 0.5.0)", + "htmltools (>= 0.5.1)", + "jquerylib", + "jsonlite", + "knitr (>= 1.43)", + "methods", + "tinytex (>= 0.31)", + "tools", + "utils", + "xfun (>= 0.36)", + "yaml (>= 2.1.19)" + ], + "Suggests": [ + "digest", + "dygraphs", + "fs", + "rsconnect", + "downlit (>= 0.4.0)", + "katex (>= 1.4.0)", + "sass (>= 0.4.0)", + "shiny (>= 1.6.0)", + "testthat (>= 3.0.3)", + "tibble", + "vctrs", + "cleanrmd", + "withr (>= 2.4.2)", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "rstudio/quillt, pkgdown", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "pandoc (>= 1.14) - http://pandoc.org", + "NeedsCompilation": "no", + "Author": "JJ Allaire [aut], Yihui Xie [aut, cre] (ORCID: ), Christophe Dervieux [aut] (ORCID: ), Jonathan McPherson [aut], Javier Luraschi [aut], Kevin Ushey [aut], Aron Atkins [aut], Hadley Wickham [aut], Joe Cheng [aut], Winston Chang [aut], Richard Iannone [aut] (ORCID: ), Andrew Dunning [ctb] (ORCID: ), Atsushi Yasumoto [ctb, cph] (ORCID: , cph: Number sections Lua filter), Barret Schloerke [ctb], Carson Sievert [ctb] (ORCID: ), Devon Ryan [ctb] (ORCID: ), Frederik Aust [ctb] (ORCID: ), Jeff Allen [ctb], JooYoung Seo [ctb] (ORCID: ), Malcolm Barrett [ctb], Rob Hyndman [ctb], Romain Lesur [ctb], Roy Storey [ctb], Ruben Arslan [ctb], Sergio Oller [ctb], Posit Software, PBC [cph, fnd], jQuery UI contributors [ctb, cph] (jQuery UI library; authors listed in inst/rmd/h/jqueryui/AUTHORS.txt), Mark Otto [ctb] (Bootstrap library), Jacob Thornton [ctb] (Bootstrap library), Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Alexander Farkas [ctb, cph] (html5shiv library), Scott Jehl [ctb, cph] (Respond.js library), Ivan Sagalaev [ctb, cph] (highlight.js library), Greg Franko [ctb, cph] (tocify library), John MacFarlane [ctb, cph] (Pandoc templates), Google, Inc. [ctb, cph] (ioslides library), Dave Raggett [ctb] (slidy library), W3C [cph] (slidy library), Dave Gandy [ctb, cph] (Font-Awesome), Ben Sperry [ctb] (Ionicons), Drifty [cph] (Ionicons), Aidan Lister [ctb, cph] (jQuery StickyTabs), Benct Philip Jonsson [ctb, cph] (pagebreak Lua filter), Albert Krewinkel [ctb, cph] (pagebreak Lua filter)", + "Maintainer": "Yihui Xie ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "rosm": { + "Package": "rosm", + "Version": "0.3.0", + "Source": "Repository", + "Type": "Package", + "Title": "Plot Raster Map Tiles from Open Street Map and Other Sources", + "Encoding": "UTF-8", + "Authors@R": "c(person(\"Dewey\", \"Dunnington\", role = c(\"aut\", \"cre\"), email = \"dewey@fishandwhistle.net\", comment = c(ORCID = \"0000-0002-9415-4582\")), person(\"Timothée\", \"Giraud\", role = \"ctb\"))", + "Maintainer": "Dewey Dunnington ", + "Description": "Download and plot Open Street Map , Bing Maps and other tiled map sources. Use to create basemaps quickly and add hillshade to vector-based maps.", + "License": "GPL-2", + "Imports": [ + "curl", + "jpeg", + "png", + "wk", + "glue", + "progress", + "rlang" + ], + "Suggests": [ + "sp", + "plyr", + "raster", + "testthat (>= 3.0.0)", + "withr", + "sf", + "terra", + "abind", + "methods", + "jsonlite", + "tiff", + "vdiffr" + ], + "URL": "https://github.com/paleolimbot/rosm", + "BugReports": "https://github.com/paleolimbot/rosm/issues", + "RoxygenNote": "7.2.3", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Dewey Dunnington [aut, cre] (), Timothée Giraud [ctb]", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "rpart": { + "Package": "rpart", + "Version": "4.1.24", + "Source": "Repository", + "Priority": "recommended", + "Date": "2025-01-06", + "Authors@R": "c(person(\"Terry\", \"Therneau\", role = \"aut\", email = \"therneau@mayo.edu\"), person(\"Beth\", \"Atkinson\", role = c(\"aut\", \"cre\"), email = \"atkinson@mayo.edu\"), person(\"Brian\", \"Ripley\", role = \"trl\", email = \"ripley@stats.ox.ac.uk\", comment = \"producer of the initial R port, maintainer 1999-2017\"))", + "Description": "Recursive partitioning for classification, regression and survival trees. An implementation of most of the functionality of the 1984 book by Breiman, Friedman, Olshen and Stone.", + "Title": "Recursive Partitioning and Regression Trees", + "Depends": [ + "R (>= 2.15.0)", + "graphics", + "stats", + "grDevices" + ], + "Suggests": [ + "survival" + ], + "License": "GPL-2 | GPL-3", + "LazyData": "yes", + "ByteCompile": "yes", + "NeedsCompilation": "yes", + "Author": "Terry Therneau [aut], Beth Atkinson [aut, cre], Brian Ripley [trl] (producer of the initial R port, maintainer 1999-2017)", + "Maintainer": "Beth Atkinson ", + "Repository": "CRAN", + "URL": "https://github.com/bethatkinson/rpart, https://cran.r-project.org/package=rpart", + "BugReports": "https://github.com/bethatkinson/rpart/issues" + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "2.1.1", + "Source": "Repository", + "Title": "Finding Files in Project Subdirectories", + "Authors@R": "person(given = \"Kirill\", family = \"M\\u00fcller\", role = c(\"aut\", \"cre\"), email = \"kirill@cynkra.com\", comment = c(ORCID = \"0000-0002-1416-3412\"))", + "Description": "Robust, reliable and flexible paths to files below a project root. The 'root' of a project is defined as a directory that matches a certain criterion, e.g., it contains a certain regular file.", + "License": "MIT + file LICENSE", + "URL": "https://rprojroot.r-lib.org/, https://github.com/r-lib/rprojroot", + "BugReports": "https://github.com/r-lib/rprojroot/issues", + "Depends": [ + "R (>= 3.0.0)" + ], + "Suggests": [ + "covr", + "knitr", + "lifecycle", + "rlang", + "rmarkdown", + "testthat (>= 3.2.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2.9000", + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "NeedsCompilation": "no", + "Author": "Kirill Müller [aut, cre] (ORCID: )", + "Maintainer": "Kirill Müller ", + "Repository": "P3M" + }, + "rsample": { + "Package": "rsample", + "Version": "1.3.1", + "Source": "Repository", + "Title": "General Resampling Infrastructure", + "Authors@R": "c( person(\"Hannah\", \"Frick\", , \"hannah@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6049-5258\")), person(\"Fanny\", \"Chow\", , \"fannybchow@gmail.com\", role = \"aut\"), person(\"Max\", \"Kuhn\", , \"max@posit.co\", role = \"aut\"), person(\"Michael\", \"Mahoney\", , \"mike.mahoney.218@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0003-2402-304X\")), person(\"Julia\", \"Silge\", , \"julia.silge@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-3671-836X\")), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Classes and functions to create and summarize different types of resampling objects (e.g. bootstrap, cross-validation).", + "License": "MIT + file LICENSE", + "URL": "https://rsample.tidymodels.org, https://github.com/tidymodels/rsample", + "BugReports": "https://github.com/tidymodels/rsample/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli", + "dplyr (>= 1.1.1)", + "furrr", + "generics", + "glue", + "lifecycle", + "methods", + "pillar", + "purrr (>= 1.0.0)", + "rlang (>= 1.1.0)", + "slider (>= 0.1.5)", + "tibble", + "tidyr", + "tidyselect", + "vctrs (>= 0.5.0)" + ], + "Suggests": [ + "broom", + "covr", + "ggplot2", + "knitr", + "modeldata", + "recipes (>= 0.1.4)", + "rmarkdown", + "stats", + "testthat (>= 3.0.0)", + "utils", + "whisker", + "withr", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "GGally, nlstools, tidymodels, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-23", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hannah Frick [aut, cre] (ORCID: ), Fanny Chow [aut], Max Kuhn [aut], Michael Mahoney [aut] (ORCID: ), Julia Silge [aut] (ORCID: ), Hadley Wickham [aut], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hannah Frick ", + "Repository": "RSPM" + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.18.0", + "Source": "Repository", + "Title": "Safely Access the RStudio API", + "Description": "Access the RStudio API (if available) and provide informative error messages when it's not.", + "Authors@R": "c( person(\"Kevin\", \"Ushey\", role = c(\"aut\", \"cre\"), email = \"kevin@rstudio.com\"), person(\"JJ\", \"Allaire\", role = c(\"aut\"), email = \"jj@posit.co\"), person(\"Hadley\", \"Wickham\", role = c(\"aut\"), email = \"hadley@posit.co\"), person(\"Gary\", \"Ritchie\", role = c(\"aut\"), email = \"gary@posit.co\"), person(family = \"RStudio\", role = \"cph\") )", + "Maintainer": "Kevin Ushey ", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/rstudioapi/, https://github.com/rstudio/rstudioapi", + "BugReports": "https://github.com/rstudio/rstudioapi/issues", + "RoxygenNote": "7.3.3", + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "clipr", + "covr", + "curl", + "jsonlite", + "withr" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Kevin Ushey [aut, cre], JJ Allaire [aut], Hadley Wickham [aut], Gary Ritchie [aut], RStudio [cph]", + "Repository": "P3M" + }, + "rvest": { + "Package": "rvest", + "Version": "1.0.5", + "Source": "Repository", + "Title": "Easily Harvest (Scrape) Web Pages", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Wrappers around the 'xml2' and 'httr' packages to make it easy to download, then manipulate, HTML and XML.", + "License": "MIT + file LICENSE", + "URL": "https://rvest.tidyverse.org/, https://github.com/tidyverse/rvest", + "BugReports": "https://github.com/tidyverse/rvest/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli", + "glue", + "httr (>= 0.5)", + "lifecycle (>= 1.0.3)", + "magrittr", + "rlang (>= 1.1.0)", + "selectr", + "tibble", + "xml2 (>= 1.4.0)" + ], + "Suggests": [ + "chromote", + "covr", + "knitr", + "purrr", + "R6", + "readr", + "repurrrsive", + "rmarkdown", + "spelling", + "stringi (>= 0.3.1)", + "testthat (>= 3.0.2)", + "tidyr", + "webfakes" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hadley Wickham ", + "Repository": "RSPM" + }, + "s2": { + "Package": "s2", + "Version": "1.1.9", + "Source": "Repository", + "Title": "Spherical Geometry Operators Using the S2 Geometry Library", + "Authors@R": "c( person(given = \"Dewey\", family = \"Dunnington\", role = c(\"aut\"), email = \"dewey@fishandwhistle.net\", comment = c(ORCID = \"0000-0002-9415-4582\")), person(given = \"Edzer\", family = \"Pebesma\", role = c(\"aut\", \"cre\"), email = \"edzer.pebesma@uni-muenster.de\", comment = c(ORCID = \"0000-0001-8049-7069\")), person(\"Ege\", \"Rubak\", email=\"rubak@math.aau.dk\", role = c(\"aut\")), person(\"Jeroen\", \"Ooms\", , \"jeroen.ooms@stat.ucla.edu\", role = \"ctb\", comment = \"configure script\"), person(family = \"Google, Inc.\", role = \"cph\", comment = \"Original s2geometry.io source code\") )", + "Description": "Provides R bindings for Google's s2 library for geometric calculations on the sphere. High-performance constructors and exporters provide high compatibility with existing spatial packages, transformers construct new geometries from existing geometries, predicates provide a means to select geometries based on spatial relationships, and accessors extract information about geometries.", + "License": "Apache License (== 2.0)", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.2", + "SystemRequirements": "cmake, OpenSSL >= 1.0.1, Abseil >= 20230802.0", + "LinkingTo": [ + "Rcpp", + "wk" + ], + "Imports": [ + "Rcpp", + "wk (>= 0.6.0)" + ], + "Suggests": [ + "bit64", + "testthat (>= 3.0.0)", + "vctrs" + ], + "URL": "https://r-spatial.github.io/s2/, https://github.com/r-spatial/s2, http://s2geometry.io/", + "BugReports": "https://github.com/r-spatial/s2/issues", + "Depends": [ + "R (>= 3.0.0)" + ], + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Author": "Dewey Dunnington [aut] (ORCID: ), Edzer Pebesma [aut, cre] (ORCID: ), Ege Rubak [aut], Jeroen Ooms [ctb] (configure script), Google, Inc. [cph] (Original s2geometry.io source code)", + "Maintainer": "Edzer Pebesma ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "sass": { + "Package": "sass", + "Version": "0.4.10", + "Source": "Repository", + "Type": "Package", + "Title": "Syntactically Awesome Style Sheets ('Sass')", + "Description": "An 'SCSS' compiler, powered by the 'LibSass' library. With this, R developers can use variables, inheritance, and functions to generate dynamic style sheets. The package uses the 'Sass CSS' extension language, which is stable, powerful, and CSS compatible.", + "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@rstudio.com\", \"aut\"), person(\"Timothy\", \"Mastny\", , \"tim.mastny@gmail.com\", \"aut\"), person(\"Richard\", \"Iannone\", , \"rich@rstudio.com\", \"aut\", comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"Barret\", \"Schloerke\", , \"barret@rstudio.com\", \"aut\", comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"Carson\", \"Sievert\", , \"carson@rstudio.com\", c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Christophe\", \"Dervieux\", , \"cderv@rstudio.com\", c(\"ctb\"), comment = c(ORCID = \"0000-0003-4474-2498\")), person(family = \"RStudio\", role = c(\"cph\", \"fnd\")), person(family = \"Sass Open Source Foundation\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Greter\", \"Marcel\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Mifsud\", \"Michael\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Hampton\", \"Catlin\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Natalie\", \"Weizenbaum\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Chris\", \"Eppstein\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Adams\", \"Joseph\", role = c(\"ctb\", \"cph\"), comment = \"json.cpp\"), person(\"Trifunovic\", \"Nemanja\", role = c(\"ctb\", \"cph\"), comment = \"utf8.h\") )", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/sass/, https://github.com/rstudio/sass", + "BugReports": "https://github.com/rstudio/sass/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "GNU make", + "Imports": [ + "fs (>= 1.2.4)", + "rlang (>= 0.4.10)", + "htmltools (>= 0.5.1)", + "R6", + "rappdirs" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "withr", + "shiny", + "curl" + ], + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Author": "Joe Cheng [aut], Timothy Mastny [aut], Richard Iannone [aut] (), Barret Schloerke [aut] (), Carson Sievert [aut, cre] (), Christophe Dervieux [ctb] (), RStudio [cph, fnd], Sass Open Source Foundation [ctb, cph] (LibSass library), Greter Marcel [ctb, cph] (LibSass library), Mifsud Michael [ctb, cph] (LibSass library), Hampton Catlin [ctb, cph] (LibSass library), Natalie Weizenbaum [ctb, cph] (LibSass library), Chris Eppstein [ctb, cph] (LibSass library), Adams Joseph [ctb, cph] (json.cpp), Trifunovic Nemanja [ctb, cph] (utf8.h)", + "Maintainer": "Carson Sievert ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "scales": { + "Package": "scales", + "Version": "1.4.0", + "Source": "Repository", + "Title": "Scale Functions for Visualization", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Dana\", \"Seidel\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Graphical scales map data to aesthetics, and provide methods for automatically determining breaks and labels for axes and legends.", + "License": "MIT + file LICENSE", + "URL": "https://scales.r-lib.org, https://github.com/r-lib/scales", + "BugReports": "https://github.com/r-lib/scales/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli", + "farver (>= 2.0.3)", + "glue", + "labeling", + "lifecycle", + "R6", + "RColorBrewer", + "rlang (>= 1.1.0)", + "viridisLite" + ], + "Suggests": [ + "bit64", + "covr", + "dichromat", + "ggplot2", + "hms (>= 0.5.0)", + "stringi", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-23", + "Encoding": "UTF-8", + "LazyLoad": "yes", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut], Thomas Lin Pedersen [cre, aut] (), Dana Seidel [aut], Posit Software, PBC [cph, fnd] (03wc8by49)", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "RSPM" + }, + "secretbase": { + "Package": "secretbase", + "Version": "1.1.1", + "Source": "Repository", + "Type": "Package", + "Title": "Cryptographic Hash, Extendable-Output and Binary Encoding Functions", + "Authors@R": "c( person(\"Charlie\", \"Gao\", , \"charlie.gao@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-0750-061X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")), person(\"Hibiki AI Limited\", role = \"cph\") )", + "Description": "Fast and memory-efficient streaming hash functions, binary encoding and serialization. Hashes strings and raw vectors directly. Stream hashes files which can be larger than memory, as well as in-memory objects through R's serialization mechanism. Implements the SHA-256, SHA-3 and 'Keccak' cryptographic hash functions, SHAKE256 extendable-output function (XOF), 'SipHash' pseudo-random function, base64 and base58 encoding, and 'CBOR' serialization.", + "License": "MIT + file LICENSE", + "URL": "https://shikokuchuo.net/secretbase/, https://github.com/shikokuchuo/secretbase/", + "BugReports": "https://github.com/shikokuchuo/secretbase/issues", + "Depends": [ + "R (>= 3.5)" + ], + "Config/build/compilation-database": "true", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Charlie Gao [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: ), Hibiki AI Limited [cph]", + "Maintainer": "Charlie Gao ", + "Repository": "RSPM" + }, + "selectr": { + "Package": "selectr", + "Version": "0.5-1", + "Source": "Repository", + "Type": "Package", + "Title": "Translate CSS Selectors to XPath Expressions", + "Authors@R": "c(person(\"Simon\", \"Potter\", role = c(\"aut\", \"trl\", \"cre\"), email = \"simon@sjp.co.nz\"), person(\"Simon\", \"Sapin\", role = \"aut\"), person(\"Ian\", \"Bicking\", role = \"aut\"))", + "License": "BSD_3_clause + file LICENCE", + "Depends": [ + "R (>= 3.0)" + ], + "Imports": [ + "methods", + "stringr", + "R6" + ], + "Suggests": [ + "testthat", + "XML", + "xml2" + ], + "URL": "https://sjp.co.nz/projects/selectr/", + "BugReports": "https://github.com/sjp/selectr/issues", + "Description": "Translates a CSS selector into an equivalent XPath expression. This allows us to use CSS selectors when working with the XML package as it can only evaluate XPath expressions. Also provided are convenience functions useful for using CSS selectors on XML nodes. This package is a port of the Python package 'cssselect' ().", + "NeedsCompilation": "no", + "Author": "Simon Potter [aut, trl, cre], Simon Sapin [aut], Ian Bicking [aut]", + "Maintainer": "Simon Potter ", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "sf": { + "Package": "sf", + "Version": "1.0-24", + "Source": "Repository", + "Title": "Simple Features for R", + "Authors@R": "c(person(given = \"Edzer\", family = \"Pebesma\", role = c(\"aut\", \"cre\"), email = \"edzer.pebesma@uni-muenster.de\", comment = c(ORCID = \"0000-0001-8049-7069\")), person(given = \"Roger\", family = \"Bivand\", role = \"ctb\", comment = c(ORCID = \"0000-0003-2392-6140\")), person(given = \"Etienne\", family = \"Racine\", role = \"ctb\"), person(given = \"Michael\", family = \"Sumner\", role = \"ctb\"), person(given = \"Ian\", family = \"Cook\", role = \"ctb\"), person(given = \"Tim\", family = \"Keitt\", role = \"ctb\"), person(given = \"Robin\", family = \"Lovelace\", role = \"ctb\"), person(given = \"Hadley\", family = \"Wickham\", role = \"ctb\"), person(given = \"Jeroen\", family = \"Ooms\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(given = \"Kirill\", family = \"M\\u00fcller\", role = \"ctb\"), person(given = \"Thomas Lin\", family = \"Pedersen\", role = \"ctb\"), person(given = \"Dan\", family = \"Baston\", role = \"ctb\"), person(given = \"Dewey\", family = \"Dunnington\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9415-4582\")) )", + "Description": "Support for simple feature access, a standardized way to encode and analyze spatial vector data. Binds to 'GDAL' for reading and writing data, to 'GEOS' for geometrical operations, and to 'PROJ' for projection conversions and datum transformations. Uses by default the 's2' package for geometry operations on geodetic (long/lat degree) coordinates.", + "License": "GPL-2 | MIT + file LICENSE", + "URL": "https://r-spatial.github.io/sf/, https://github.com/r-spatial/sf", + "BugReports": "https://github.com/r-spatial/sf/issues", + "Depends": [ + "methods", + "R (>= 3.3.0)" + ], + "Imports": [ + "classInt (>= 0.4-1)", + "DBI (>= 0.8)", + "graphics", + "grDevices", + "grid", + "magrittr", + "s2 (>= 1.1.0)", + "stats", + "tools", + "units (>= 0.7-0)", + "utils" + ], + "Suggests": [ + "blob", + "nanoarrow", + "covr", + "dplyr (>= 1.0.0)", + "ggplot2", + "knitr", + "lwgeom (>= 0.2-14)", + "maps", + "mapview", + "Matrix", + "microbenchmark", + "odbc", + "pbapply", + "pillar", + "pool", + "raster", + "rlang", + "rmarkdown", + "RPostgres (>= 1.1.0)", + "RPostgreSQL", + "RSQLite", + "sp (>= 1.2-4)", + "spatstat (>= 2.0-1)", + "spatstat.geom", + "spatstat.random", + "spatstat.linnet", + "spatstat.utils", + "stars (>= 0.6-0)", + "terra", + "testthat (>= 3.0.0)", + "tibble (>= 1.4.1)", + "tidyr (>= 1.2.0)", + "tidyselect (>= 1.0.0)", + "tmap (>= 2.0)", + "vctrs", + "wk (>= 0.9.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Config/testthat/edition": "2", + "Config/needs/coverage": "XML", + "SystemRequirements": "GDAL (>= 2.0.1), GEOS (>= 3.4.0), PROJ (>= 4.8.0), sqlite3", + "Collate": "'RcppExports.R' 'init.R' 'import-standalone-s3-register.R' 'crs.R' 'bbox.R' 'read.R' 'db.R' 'sfc.R' 'sfg.R' 'sf.R' 'bind.R' 'wkb.R' 'wkt.R' 'plot.R' 'geom-measures.R' 'geom-predicates.R' 'geom-transformers.R' 'transform.R' 'proj.R' 'sp.R' 'grid.R' 'arith.R' 'tidyverse.R' 'tidyverse-vctrs.R' 'cast_sfg.R' 'cast_sfc.R' 'graticule.R' 'datasets.R' 'aggregate.R' 'agr.R' 'maps.R' 'join.R' 'sample.R' 'valid.R' 'collection_extract.R' 'jitter.R' 'sgbp.R' 'spatstat.R' 'stars.R' 'crop.R' 'gdal_utils.R' 'nearest.R' 'normalize.R' 'sf-package.R' 'defunct.R' 'z_range.R' 'm_range.R' 'shift_longitude.R' 'make_grid.R' 's2.R' 'terra.R' 'geos-overlayng.R' 'break_antimeridian.R'", + "NeedsCompilation": "yes", + "Author": "Edzer Pebesma [aut, cre] (ORCID: ), Roger Bivand [ctb] (ORCID: ), Etienne Racine [ctb], Michael Sumner [ctb], Ian Cook [ctb], Tim Keitt [ctb], Robin Lovelace [ctb], Hadley Wickham [ctb], Jeroen Ooms [ctb] (ORCID: ), Kirill Müller [ctb], Thomas Lin Pedersen [ctb], Dan Baston [ctb], Dewey Dunnington [ctb] (ORCID: )", + "Maintainer": "Edzer Pebesma ", + "Repository": "P3M" + }, + "sfd": { + "Package": "sfd", + "Version": "0.1.0", + "Source": "Repository", + "Title": "Space-Filling Design Library", + "Authors@R": "person(\"Max\", \"Kuhn\", , \"mxkuhn@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-2402-136X\"))", + "Description": "A collection of pre-optimized space-filling designs, for up to ten parameters, is contained here. Functions are provided to access designs described by Husslage et al (2011) and Wang and Fang (2005) . The design types included are Audze-Eglais, MaxiMin, and uniform.", + "License": "MIT + file LICENSE", + "Depends": [ + "R (>= 2.10)", + "tibble" + ], + "Imports": [ + "cli", + "rlang" + ], + "Suggests": [ + "ggplot2", + "spelling", + "testthat (>= 3.0.0)" + ], + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-US", + "LazyData": "true", + "RoxygenNote": "7.2.3.9000", + "NeedsCompilation": "no", + "Author": "Max Kuhn [aut, cre] ()", + "Maintainer": "Max Kuhn ", + "Repository": "RSPM" + }, + "sfheaders": { + "Package": "sfheaders", + "Version": "0.4.5", + "Source": "Repository", + "Type": "Package", + "Title": "Converts Between R Objects and Simple Feature Objects", + "Date": "2025-11-24", + "Authors@R": "c( person(\"David\", \"Cooley\", ,\"david.cooley.au@gmail.com\", role = c(\"aut\", \"cre\")), person(given = \"Michael\", family = \"Sumner\", role = \"ctb\") )", + "Description": "Converts between R and Simple Feature 'sf' objects, without depending on the Simple Feature library. Conversion functions are available at both the R level, and through 'Rcpp'.", + "License": "MIT + file LICENSE", + "URL": "https://dcooley.github.io/sfheaders/", + "BugReports": "https://github.com/dcooley/sfheaders/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "Depends": [ + "R (>= 3.0.2)" + ], + "LinkingTo": [ + "geometries (>= 0.2.5)", + "Rcpp" + ], + "Imports": [ + "Rcpp (>= 1.1.0)" + ], + "Suggests": [ + "covr", + "knitr", + "testthat" + ], + "NeedsCompilation": "yes", + "Author": "David Cooley [aut, cre], Michael Sumner [ctb]", + "Maintainer": "David Cooley ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "shape": { + "Package": "shape", + "Version": "1.4.6.1", + "Source": "Repository", + "Title": "Functions for Plotting Graphical Shapes, Colors", + "Author": "Karline Soetaert ", + "Maintainer": "Karline Soetaert ", + "Depends": [ + "R (>= 2.01)" + ], + "Imports": [ + "stats", + "graphics", + "grDevices" + ], + "Description": "Functions for plotting graphical shapes such as ellipses, circles, cylinders, arrows, ...", + "License": "GPL (>= 3)", + "NeedsCompilation": "no", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "showtext": { + "Package": "showtext", + "Version": "0.9-7", + "Source": "Repository", + "Type": "Package", + "Title": "Using Fonts More Easily in R Graphs", + "Date": "2024-03-02", + "Author": "Yixuan Qiu and authors/contributors of the included software. See file AUTHORS for details.", + "Maintainer": "Yixuan Qiu ", + "Description": "Making it easy to use various types of fonts ('TrueType', 'OpenType', Type 1, web fonts, etc.) in R graphs, and supporting most output formats of R graphics including PNG, PDF and SVG. Text glyphs will be converted into polygons or raster images, hence after the plot has been created, it no longer relies on the font files. No external software such as 'Ghostscript' is needed to use this package.", + "Depends": [ + "sysfonts (>= 0.7.1)", + "showtextdb (>= 2.0)" + ], + "Imports": [ + "grDevices" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "prettydoc", + "curl", + "jsonlite" + ], + "SystemRequirements": "zlib, libpng, FreeType", + "URL": "https://github.com/yixuan/showtext", + "BugReports": "https://github.com/yixuan/showtext/issues", + "License": "Apache License (>= 2.0)", + "Copyright": "see file COPYRIGHTS", + "VignetteBuilder": "knitr, rmarkdown", + "RoxygenNote": "7.3.1", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Repository": "P3M" + }, + "showtextdb": { + "Package": "showtextdb", + "Version": "3.0", + "Source": "Repository", + "Type": "Package", + "Title": "Font Files for the 'showtext' Package", + "Date": "2020-05-31", + "Author": "Yixuan Qiu and authors/contributors of the included fonts. See file AUTHORS for details.", + "Maintainer": "Yixuan Qiu ", + "Description": "Providing font files that can be used by the 'showtext' package.", + "Imports": [ + "sysfonts (>= 0.7)", + "utils" + ], + "Suggests": [ + "curl" + ], + "License": "Apache License (>= 2.0)", + "Copyright": "see file COPYRIGHTS", + "RoxygenNote": "7.1.0", + "NeedsCompilation": "no", + "Repository": "P3M", + "Encoding": "UTF-8" + }, + "slider": { + "Package": "slider", + "Version": "0.3.3", + "Source": "Repository", + "Title": "Sliding Window Functions", + "Authors@R": "c( person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides type-stable rolling window functions over any R data type. Cumulative and expanding windows are also supported. For more advanced usage, an index can be used as a secondary vector that defines how sliding windows are to be created.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/slider, https://slider.r-lib.org", + "BugReports": "https://github.com/r-lib/slider/issues", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "cli (>= 3.6.1)", + "rlang (>= 1.1.1)", + "vctrs (>= 0.6.3)", + "warp" + ], + "Suggests": [ + "covr", + "dplyr (>= 1.0.0)", + "knitr", + "lubridate", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "vctrs (>= 0.6.3)" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-11-13", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Collate": "'arithmetic.R' 'block.R' 'conditions.R' 'hop-common.R' 'hop-index-common.R' 'hop-index.R' 'hop-index2.R' 'hop.R' 'hop2.R' 'phop-index.R' 'phop.R' 'slide-index2.R' 'pslide-index.R' 'slide-period2.R' 'pslide-period.R' 'slide2.R' 'pslide.R' 'segment-tree.R' 'slide-common.R' 'slide-index-common.R' 'slide-index.R' 'slide-period-common.R' 'slide-period.R' 'slide.R' 'slider-package.R' 'summary-index.R' 'summary-slide.R' 'utils.R' 'zzz.R'", + "NeedsCompilation": "yes", + "Author": "Davis Vaughan [aut, cre], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Davis Vaughan ", + "Repository": "RSPM" + }, + "slippymath": { + "Package": "slippymath", + "Version": "0.3.1", + "Source": "Repository", + "Title": "Slippy Map Tile Tools", + "Authors@R": "c( person(\"Miles\", \"McBain\", email = \"miles.mcbain@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-2865-2548\")), person(\"Michael\",\"Sumner\", email = \"mdsumner@gmail.com\", role = c(\"aut\")))", + "Description": "Provides functions for performing common tasks when working with slippy map tile service APIs e.g. Google maps, Open Street Map, Mapbox, Stamen, among others. Functionality includes converting from latitude and longitude to tile numbers, determining tile bounding boxes, and compositing tiles to a georeferenced raster image.", + "Depends": [ + "R (>= 3.5.0)" + ], + "License": "MIT + file LICENSE", + "URL": "https://www.github.com/milesmcbain/slippymath", + "BugReports": "https://www.github.com/milesmcbain/slippymath/issues", + "Encoding": "UTF-8", + "LazyData": "true", + "Imports": [ + "raster", + "purrr", + "stats", + "png" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown" + ], + "RoxygenNote": "6.1.1", + "VignetteBuilder": "knitr", + "NeedsCompilation": "no", + "Author": "Miles McBain [aut, cre] (), Michael Sumner [aut]", + "Maintainer": "Miles McBain ", + "Repository": "P3M" + }, + "sp": { + "Package": "sp", + "Version": "2.2-0", + "Source": "Repository", + "Title": "Classes and Methods for Spatial Data", + "Authors@R": "c(person(\"Edzer\", \"Pebesma\", role = c(\"aut\", \"cre\"), email = \"edzer.pebesma@uni-muenster.de\"), person(\"Roger\", \"Bivand\", role = \"aut\", email = \"Roger.Bivand@nhh.no\"), person(\"Barry\", \"Rowlingson\", role = \"ctb\"), person(\"Virgilio\", \"Gomez-Rubio\", role = \"ctb\"), person(\"Robert\", \"Hijmans\", role = \"ctb\"), person(\"Michael\", \"Sumner\", role = \"ctb\"), person(\"Don\", \"MacQueen\", role = \"ctb\"), person(\"Jim\", \"Lemon\", role = \"ctb\"), person(\"Finn\", \"Lindgren\", role = \"ctb\"), person(\"Josh\", \"O'Brien\", role = \"ctb\"), person(\"Joseph\", \"O'Rourke\", role = \"ctb\"), person(\"Patrick\", \"Hausmann\", role = \"ctb\"))", + "Depends": [ + "R (>= 3.5.0)", + "methods" + ], + "Imports": [ + "utils", + "stats", + "graphics", + "grDevices", + "lattice", + "grid" + ], + "Suggests": [ + "RColorBrewer", + "gstat", + "deldir", + "knitr", + "maps", + "mapview", + "rmarkdown", + "sf", + "terra", + "raster" + ], + "Description": "Classes and methods for spatial data; the classes document where the spatial location information resides, for 2D or 3D data. Utility functions are provided, e.g. for plotting data as maps, spatial selection, as well as methods for retrieving coordinates, for subsetting, print, summary, etc. From this version, 'rgdal', 'maptools', and 'rgeos' are no longer used at all, see for details.", + "License": "GPL (>= 2)", + "URL": "https://github.com/edzer/sp/ https://edzer.github.io/sp/", + "BugReports": "https://github.com/edzer/sp/issues", + "Collate": "bpy.colors.R AAA.R Class-CRS.R CRS-methods.R Class-Spatial.R Spatial-methods.R projected.R Class-SpatialPoints.R SpatialPoints-methods.R Class-SpatialPointsDataFrame.R SpatialPointsDataFrame-methods.R Class-SpatialMultiPoints.R SpatialMultiPoints-methods.R Class-SpatialMultiPointsDataFrame.R SpatialMultiPointsDataFrame-methods.R Class-GridTopology.R Class-SpatialGrid.R Class-SpatialGridDataFrame.R Class-SpatialLines.R SpatialLines-methods.R Class-SpatialLinesDataFrame.R SpatialLinesDataFrame-methods.R Class-SpatialPolygons.R Class-SpatialPolygonsDataFrame.R SpatialPolygons-methods.R SpatialPolygonsDataFrame-methods.R GridTopology-methods.R SpatialGrid-methods.R SpatialGridDataFrame-methods.R SpatialPolygons-internals.R point.in.polygon.R SpatialPolygons-displayMethods.R zerodist.R image.R stack.R bubble.R mapasp.R select.spatial.R gridded.R asciigrid.R spplot.R over.R spsample.R recenter.R dms.R gridlines.R spdists.R rbind.R flipSGDF.R chfids.R loadmeuse.R compassRose.R surfaceArea.R spOptions.R subset.R disaggregate.R sp_spat1.R merge.R aggregate.R elide.R sp2Mondrian.R", + "VignetteBuilder": "knitr", + "NeedsCompilation": "yes", + "Author": "Edzer Pebesma [aut, cre], Roger Bivand [aut], Barry Rowlingson [ctb], Virgilio Gomez-Rubio [ctb], Robert Hijmans [ctb], Michael Sumner [ctb], Don MacQueen [ctb], Jim Lemon [ctb], Finn Lindgren [ctb], Josh O'Brien [ctb], Joseph O'Rourke [ctb], Patrick Hausmann [ctb]", + "Maintainer": "Edzer Pebesma ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "spData": { + "Package": "spData", + "Version": "2.3.4", + "Source": "Repository", + "Title": "Datasets for Spatial Analysis", + "Authors@R": "c(person(\"Roger\", \"Bivand\", role = \"aut\", email=\"Roger.Bivand@nhh.no\", comment = c(ORCID = \"0000-0003-2392-6140\")), person(\"Jakub\", \"Nowosad\", role = c(\"aut\", \"cre\"), email=\"nowosad.jakub@gmail.com\", comment = c(ORCID = \"0000-0002-1057-3721\")), person(\"Robin\", \"Lovelace\", role = \"aut\", comment = c(ORCID = \"0000-0001-5679-6536\")), person(\"Angelos\", \"Mimis\", role = \"ctb\"), person(\"Mark\", \"Monmonier\", role = \"ctb\", comment = \"author of the state.vbm dataset\"), person(\"Greg\", \"Snow\", role = \"ctb\", comment = \"author of the state.vbm dataset\") )", + "Description": "Diverse spatial datasets for demonstrating, benchmarking and teaching spatial data analysis. It includes R data of class sf (defined by the package 'sf'), Spatial ('sp'), and nb ('spdep'). Unlike other spatial data packages such as 'rnaturalearth' and 'maps', it also contains data stored in a range of file formats including GeoJSON and GeoPackage, but from version 2.3.4, no longer ESRI Shapefile - use GeoPackage instead. Some of the datasets are designed to illustrate specific analysis techniques. cycle_hire() and cycle_hire_osm(), for example, is designed to illustrate point pattern analysis techniques.", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "sp" + ], + "Suggests": [ + "foreign", + "sf (>= 0.9-1)", + "spDataLarge (>= 0.4.0)", + "spdep", + "spatialreg" + ], + "License": "CC0", + "RoxygenNote": "7.3.2", + "LazyData": "true", + "URL": "https://jakubnowosad.com/spData/", + "BugReports": "https://github.com/Nowosad/spData/issues", + "Additional_repositories": "https://jakubnowosad.com/drat", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Roger Bivand [aut] (), Jakub Nowosad [aut, cre] (), Robin Lovelace [aut] (), Angelos Mimis [ctb], Mark Monmonier [ctb] (author of the state.vbm dataset), Greg Snow [ctb] (author of the state.vbm dataset)", + "Maintainer": "Jakub Nowosad ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "spam": { + "Package": "spam", + "Version": "2.11-3", + "Source": "Repository", + "Type": "Package", + "Title": "SPArse Matrix", + "Date": "2026-01-05", + "Authors@R": "c(person(\"Reinhard\", \"Furrer\", role = c(\"aut\", \"cre\"), email = \"reinhard.furrer@math.uzh.ch\", comment = c(ORCID = \"0000-0002-6319-2332\")), person(\"Florian\", \"Gerber\", role = c(\"aut\"), email = \"florian.gerber@math.uzh.ch\", comment = c(ORCID = \"0000-0001-8545-5263\")), person(\"Roman\", \"Flury\", role = c(\"aut\"), email = \"roman.flury@math.uzh.ch\", comment = c(ORCID = \"0000-0002-0349-8698\")), person(\"Daniel\", \"Gerber\", role = \"ctb\", email = \"daniel_gerber_2222@hotmail.com\"), person(\"Kaspar\", \"Moesinger\", role = \"ctb\", email = \"kaspar.moesinger@gmail.com\"), person(\"Annina\", \"Cincera\", email = \"annina.cincera@math.uzh.ch\", role = \"ctb\"), person(\"Youcef\", \"Saad\", role = \"ctb\", comment = \"SPARSEKIT http://www-users.cs.umn.edu/~saad/software/SPARSKIT/\"), person(c(\"Esmond\", \"G.\"), \"Ng\", role = \"ctb\", comment = \"Fortran Cholesky routines\"), person(c(\"Barry\", \"W.\"), \"Peyton\", role = \"ctb\", comment = \"Fortran Cholesky routines\"), person(c(\"Joseph\", \"W.H.\"), \"Liu\", role = \"ctb\", comment = \"Fortran Cholesky routines\"), person(c(\"Alan\", \"D.\"), \"George\", role = \"ctb\", comment = \"Fortran Cholesky routines\"), person(c(\"Lehoucq\", \"B.\"), \"Rich\", role = \"ctb\", comment = \"ARPACK\"), person(c(\"Maschhoff\"), \"Kristi\", role = \"ctb\", comment = \"ARPACK\"), person(c(\"Sorensen\", \"C.\"), \"Danny\", role = \"ctb\", comment = \"ARPACK\"), person(c(\"Yang\"), \"Chao\", role = \"ctb\", comment = \"ARPACK\"))", + "Depends": [ + "R (>= 4.0)" + ], + "Imports": [ + "dotCall64", + "grid", + "methods", + "Rcpp (>= 1.0.8.3)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Suggests": [ + "spam64", + "fields", + "Matrix", + "testthat", + "R.rsp", + "truncdist", + "knitr", + "rmarkdown" + ], + "VignetteBuilder": "R.rsp, knitr", + "Description": "Set of functions for sparse matrix algebra. Differences with other sparse matrix packages are: (1) we only support (essentially) one sparse matrix format, (2) based on transparent and simple structure(s), (3) tailored for MCMC calculations within G(M)RF. (4) and it is fast and scalable (with the extension package spam64). Documentation about 'spam' is provided by vignettes included in this package, see also Furrer and Sain (2010) ; see 'citation(\"spam\")' for details.", + "LazyData": "true", + "License": "LGPL-2 | BSD_3_clause + file LICENSE", + "URL": "https://www.math.uzh.ch/pages/spam/", + "BugReports": "https://git.math.uzh.ch/reinhard.furrer/spam/-/issues", + "NeedsCompilation": "yes", + "Author": "Reinhard Furrer [aut, cre] (ORCID: ), Florian Gerber [aut] (ORCID: ), Roman Flury [aut] (ORCID: ), Daniel Gerber [ctb], Kaspar Moesinger [ctb], Annina Cincera [ctb], Youcef Saad [ctb] (SPARSEKIT http://www-users.cs.umn.edu/~saad/software/SPARSKIT/), Esmond G. Ng [ctb] (Fortran Cholesky routines), Barry W. Peyton [ctb] (Fortran Cholesky routines), Joseph W.H. Liu [ctb] (Fortran Cholesky routines), Alan D. George [ctb] (Fortran Cholesky routines), Lehoucq B. Rich [ctb] (ARPACK), Maschhoff Kristi [ctb] (ARPACK), Sorensen C. Danny [ctb] (ARPACK), Yang Chao [ctb] (ARPACK)", + "Maintainer": "Reinhard Furrer ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest", + "Encoding": "UTF-8" + }, + "sparsevctrs": { + "Package": "sparsevctrs", + "Version": "0.3.5", + "Source": "Repository", + "Title": "Sparse Vectors for Use in Data Frames", + "Authors@R": "c( person(\"Emil\", \"Hvitfeldt\", , \"emil.hvitfeldt@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-0679-1945\")), person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides sparse vectors powered by ALTREP (Alternative Representations for R Objects) that behave like regular vectors, and can thus be used in data frames. Also provides tools to convert between sparse matrices and data frames with sparse columns and functions to interact with sparse vectors.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/sparsevctrs, https://r-lib.github.io/sparsevctrs/", + "BugReports": "https://github.com/r-lib/sparsevctrs/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "rlang (>= 1.1.0)", + "vctrs" + ], + "Suggests": [ + "knitr", + "Matrix", + "methods", + "rmarkdown", + "testthat (>= 3.0.0)", + "tibble", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate, rmarkdown, lobstr, ggplot2, bench, tidyr, ggbeeswarm", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Config/usethis/last-upkeep": "2025-05-25", + "NeedsCompilation": "yes", + "Author": "Emil Hvitfeldt [aut, cre] (ORCID: ), Davis Vaughan [ctb], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Emil Hvitfeldt ", + "Repository": "RSPM" + }, + "spatialsample": { + "Package": "spatialsample", + "Version": "0.6.1", + "Source": "Repository", + "Title": "Spatial Resampling Infrastructure", + "Authors@R": "c( person(\"Michael\", \"Mahoney\", , \"mike.mahoney.218@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-2402-304X\")), person(\"Julia\", \"Silge\", , \"julia.silge@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-3671-836X\")), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Functions and classes for spatial resampling to use with the 'rsample' package, such as spatial cross-validation (Brenning, 2012) . The scope of 'rsample' and 'spatialsample' is to provide the basic building blocks for creating and analyzing resamples of a spatial data set, but neither package includes functions for modeling or computing statistics. The resampled spatial data sets created by 'spatialsample' do not contain much overhead in memory.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/tidymodels/spatialsample, https://spatialsample.tidymodels.org", + "BugReports": "https://github.com/tidymodels/spatialsample/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "dplyr (>= 1.0.0)", + "ggplot2", + "glue", + "purrr", + "rlang (>= 1.0.0)", + "rsample (>= 1.1.1)", + "sf (>= 1.0-9)", + "stats", + "tibble", + "tidyselect", + "units", + "vctrs (>= 0.3.6)" + ], + "Suggests": [ + "covr", + "gifski", + "knitr", + "lwgeom", + "modeldata", + "rmarkdown", + "testthat (>= 3.0.0)", + "tidyr", + "vdiffr", + "whisker", + "withr", + "yardstick" + ], + "LinkingTo": [ + "cpp11" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Michael Mahoney [aut, cre] (ORCID: ), Julia Silge [aut] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Michael Mahoney ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "spdep": { + "Package": "spdep", + "Version": "1.4-1", + "Source": "Repository", + "Date": "2025-08-25", + "Title": "Spatial Dependence: Weighting Schemes, Statistics", + "Encoding": "UTF-8", + "Authors@R": "c(person(\"Roger\", \"Bivand\", role = c(\"cre\", \"aut\"), email = \"Roger.Bivand@nhh.no\", comment=c(ORCID=\"0000-0003-2392-6140\")), person(\"Micah\", \"Altman\", role = \"ctb\"), person(\"Luc\", \"Anselin\", role = \"ctb\"), person(\"Renato\", \"Assunção\", role = \"ctb\"), person(\"Anil\", \"Bera\", role = \"ctb\"), person(\"Olaf\", \"Berke\", role = \"ctb\"), person(\"F. Guillaume\", \"Blanchet\", role = \"ctb\"), person(\"Marilia\", \"Carvalho\", role = \"ctb\"), person(\"Bjarke\", \"Christensen\", role = \"ctb\"), person(\"Yongwan\", \"Chun\", role = \"ctb\"), person(\"Carsten\", \"Dormann\", role = \"ctb\"), person(\"Stéphane\", \"Dray\", role = \"ctb\"), person(\"Dewey\", \"Dunnington\", role = c(\"ctb\"), comment = c(ORCID = \"0000-0002-9415-4582\")), person(\"Virgilio\", \"Gómez-Rubio\", role = \"ctb\"), person(\"Malabika\", \"Koley\", role = \"ctb\"), person(\"Tomasz\", \"Kossowski\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9976-4398\")), person(\"Elias\", \"Krainski\", role = \"ctb\"), person(\"Pierre\", \"Legendre\", role = \"ctb\"), person(\"Nicholas\", \"Lewin-Koh\", role = \"ctb\"), person(\"Angela\", \"Li\", role = \"ctb\"), person(\"Giovanni\", \"Millo\", role = \"ctb\"), person(\"Werner\", \"Mueller\", role = \"ctb\"), person(\"Hisaji\", \"Ono\", role = \"ctb\"), person(\"Josiah\", \"Parry\", role = \"ctb\", comment = c(ORCID = \"0000-0001-9910-865X\")), person(\"Pedro\", \"Peres-Neto\", role = \"ctb\"), person(\"Michał\", \"Pietrzak\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9263-4478\")), person(\"Gianfranco\", \"Piras\", role = \"ctb\"), person(\"Markus\", \"Reder\", role = \"ctb\"), person(\"Jeff\", \"Sauer\", role = \"ctb\"), person(\"Michael\", \"Tiefelsdorf\", role = \"ctb\"), person(\"René\", \"Westerholt\", role=\"ctb\"), person(\"Justyna\", \"Wilk\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1495-2910\")), person(\"Levi\", \"Wolf\", role = \"ctb\"), person(\"Danlin\", \"Yu\", role = \"ctb\"))", + "Depends": [ + "R (>= 3.3.0)", + "methods", + "spData (>= 2.3.1)", + "sf" + ], + "Imports": [ + "stats", + "deldir", + "boot (>= 1.3-1)", + "graphics", + "utils", + "grDevices", + "units", + "s2", + "e1071", + "sp (>= 1.0)" + ], + "Suggests": [ + "spatialreg (>= 1.2-1)", + "Matrix", + "parallel", + "dbscan", + "RColorBrewer", + "lattice", + "xtable", + "foreign", + "igraph", + "RSpectra", + "knitr", + "classInt", + "tmap", + "spam", + "ggplot2", + "rmarkdown", + "tinytest", + "rgeoda (>= 0.0.11.1)", + "mipfp", + "Guerry", + "codingMatrices" + ], + "URL": "https://github.com/r-spatial/spdep/, https://r-spatial.github.io/spdep/", + "BugReports": "https://github.com/r-spatial/spdep/issues/", + "Description": "A collection of functions to create spatial weights matrix objects from polygon 'contiguities', from point patterns by distance and tessellations, for summarizing these objects, and for permitting their use in spatial data analysis, including regional aggregation by minimum spanning tree; a collection of tests for spatial 'autocorrelation', including global 'Morans I' and 'Gearys C' proposed by 'Cliff' and 'Ord' (1973, ISBN: 0850860369) and (1981, ISBN: 0850860814), 'Hubert/Mantel' general cross product statistic, Empirical Bayes estimates and 'Assunção/Reis' (1999) Index, 'Getis/Ord' G ('Getis' and 'Ord' 1992) and multicoloured join count statistics, 'APLE' ('Li et al.' ) , local 'Moran's I', 'Gearys C' ('Anselin' 1995) and 'Getis/Ord' G ('Ord' and 'Getis' 1995) , 'saddlepoint' approximations ('Tiefelsdorf' 2002) and exact tests for global and local 'Moran's I' ('Bivand et al.' 2009) and 'LOSH' local indicators of spatial heteroscedasticity ('Ord' and 'Getis') . The implementation of most of these measures is described in 'Bivand' and 'Wong' (2018) , with further extensions in 'Bivand' (2022) . 'Lagrange' multiplier tests for spatial dependence in linear models are provided ('Anselin et al'. 1996) , as are 'Rao' score tests for hypothesised spatial 'Durbin' models based on linear models ('Koley' and 'Bera' 2023) . Additions in 2024 include Local Indicators for Categorical Data based on 'Carrer et al.' (2021) and 'Bivand et al.' (2017) ; also Weighted Multivariate Spatial Autocorrelation Measures ('Bavaud' 2024) . . A local indicators for categorical data (LICD) implementation based on 'Carrer et al.' (2021) and 'Bivand et al.' (2017) was added in 1.3-7. Multivariate 'spatialdelta' ('Bavaud' 2024) was added in 1.3-13 ('Bivand' 2025 . From 'spdep' and 'spatialreg' versions >= 1.2-1, the model fitting functions previously present in this package are defunct in 'spdep' and may be found in 'spatialreg'.", + "License": "GPL (>= 2)", + "VignetteBuilder": "knitr", + "RoxygenNote": "RoxygenNote: 6.1.1", + "NeedsCompilation": "yes", + "Author": "Roger Bivand [cre, aut] (ORCID: ), Micah Altman [ctb], Luc Anselin [ctb], Renato Assunção [ctb], Anil Bera [ctb], Olaf Berke [ctb], F. Guillaume Blanchet [ctb], Marilia Carvalho [ctb], Bjarke Christensen [ctb], Yongwan Chun [ctb], Carsten Dormann [ctb], Stéphane Dray [ctb], Dewey Dunnington [ctb] (ORCID: ), Virgilio Gómez-Rubio [ctb], Malabika Koley [ctb], Tomasz Kossowski [ctb] (ORCID: ), Elias Krainski [ctb], Pierre Legendre [ctb], Nicholas Lewin-Koh [ctb], Angela Li [ctb], Giovanni Millo [ctb], Werner Mueller [ctb], Hisaji Ono [ctb], Josiah Parry [ctb] (ORCID: ), Pedro Peres-Neto [ctb], Michał Pietrzak [ctb] (ORCID: ), Gianfranco Piras [ctb], Markus Reder [ctb], Jeff Sauer [ctb], Michael Tiefelsdorf [ctb], René Westerholt [ctb], Justyna Wilk [ctb] (ORCID: ), Levi Wolf [ctb], Danlin Yu [ctb]", + "Maintainer": "Roger Bivand ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "stringi": { + "Package": "stringi", + "Version": "1.8.7", + "Source": "Repository", + "Date": "2025-03-27", + "Title": "Fast and Portable Character String Processing Facilities", + "Description": "A collection of character string/text/natural language processing tools for pattern searching (e.g., with 'Java'-like regular expressions or the 'Unicode' collation algorithm), random string generation, case mapping, string transliteration, concatenation, sorting, padding, wrapping, Unicode normalisation, date-time formatting and parsing, and many more. They are fast, consistent, convenient, and - thanks to 'ICU' (International Components for Unicode) - portable across all locales and platforms. Documentation about 'stringi' is provided via its website at and the paper by Gagolewski (2022, ).", + "URL": "https://stringi.gagolewski.com/, https://github.com/gagolews/stringi, https://icu.unicode.org/", + "BugReports": "https://github.com/gagolews/stringi/issues", + "SystemRequirements": "ICU4C (>= 61, optional)", + "Type": "Package", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "tools", + "utils", + "stats" + ], + "Biarch": "TRUE", + "License": "file LICENSE", + "Authors@R": "c(person(given = \"Marek\", family = \"Gagolewski\", role = c(\"aut\", \"cre\", \"cph\"), email = \"marek@gagolewski.com\", comment = c(ORCID = \"0000-0003-0637-6028\")), person(given = \"Bartek\", family = \"Tartanus\", role = \"ctb\"), person(\"Unicode, Inc. and others\", role=\"ctb\", comment = \"ICU4C source code, Unicode Character Database\") )", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Marek Gagolewski [aut, cre, cph] (), Bartek Tartanus [ctb], Unicode, Inc. and others [ctb] (ICU4C source code, Unicode Character Database)", + "Maintainer": "Marek Gagolewski ", + "License_is_FOSS": "yes", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "stringr": { + "Package": "stringr", + "Version": "1.6.0", + "Source": "Repository", + "Title": "Simple, Consistent Wrappers for Common String Operations", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\", \"cph\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A consistent, simple and easy to use set of wrappers around the fantastic 'stringi' package. All function and argument names (and positions) are consistent, all functions deal with \"NA\"'s and zero length vectors in the same way, and the output from one function is easy to feed into the input of another.", + "License": "MIT + file LICENSE", + "URL": "https://stringr.tidyverse.org, https://github.com/tidyverse/stringr", + "BugReports": "https://github.com/tidyverse/stringr/issues", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "cli", + "glue (>= 1.6.1)", + "lifecycle (>= 1.0.3)", + "magrittr", + "rlang (>= 1.0.0)", + "stringi (>= 1.5.3)", + "vctrs (>= 0.4.0)" + ], + "Suggests": [ + "covr", + "dplyr", + "gt", + "htmltools", + "htmlwidgets", + "knitr", + "rmarkdown", + "testthat (>= 3.0.0)", + "tibble" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/potools/style": "explicit", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre, cph], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "survival": { + "Package": "survival", + "Version": "3.8-3", + "Source": "Repository", + "Title": "Survival Analysis", + "Priority": "recommended", + "Date": "2024-12-17", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "graphics", + "Matrix", + "methods", + "splines", + "stats", + "utils" + ], + "LazyData": "Yes", + "LazyDataCompression": "xz", + "ByteCompile": "Yes", + "Authors@R": "c(person(c(\"Terry\", \"M\"), \"Therneau\", email=\"therneau.terry@mayo.edu\", role=c(\"aut\", \"cre\")), person(\"Thomas\", \"Lumley\", role=c(\"ctb\", \"trl\"), comment=\"original S->R port and R maintainer until 2009\"), person(\"Atkinson\", \"Elizabeth\", role=\"ctb\"), person(\"Crowson\", \"Cynthia\", role=\"ctb\"))", + "Description": "Contains the core survival analysis routines, including definition of Surv objects, Kaplan-Meier and Aalen-Johansen (multi-state) curves, Cox models, and parametric accelerated failure time models.", + "License": "LGPL (>= 2)", + "URL": "https://github.com/therneau/survival", + "NeedsCompilation": "yes", + "Author": "Terry M Therneau [aut, cre], Thomas Lumley [ctb, trl] (original S->R port and R maintainer until 2009), Atkinson Elizabeth [ctb], Crowson Cynthia [ctb]", + "Maintainer": "Terry M Therneau ", + "Repository": "CRAN" + }, + "sys": { + "Package": "sys", + "Version": "3.4.3", + "Source": "Repository", + "Type": "Package", + "Title": "Powerful and Reliable Tools for Running System Commands in R", + "Authors@R": "c(person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = \"ctb\"))", + "Description": "Drop-in replacements for the base system2() function with fine control and consistent behavior across platforms. Supports clean interruption, timeout, background tasks, and streaming STDIN / STDOUT / STDERR over binary or text connections. Arguments on Windows automatically get encoded and quoted to work on different locales.", + "License": "MIT + file LICENSE", + "URL": "https://jeroen.r-universe.dev/sys", + "BugReports": "https://github.com/jeroen/sys/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.1", + "Suggests": [ + "unix (>= 1.4)", + "spelling", + "testthat" + ], + "Language": "en-US", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (), Gábor Csárdi [ctb]", + "Maintainer": "Jeroen Ooms ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "sysfonts": { + "Package": "sysfonts", + "Version": "0.8.9", + "Source": "Repository", + "Type": "Package", + "Title": "Loading Fonts into R", + "Date": "2024-03-02", + "Author": "Yixuan Qiu and authors/contributors of the included fonts. See file AUTHORS for details.", + "Maintainer": "Yixuan Qiu ", + "Description": "Loading system fonts and Google Fonts into R, in order to support other packages such as 'R2SWF' and 'showtext'.", + "Suggests": [ + "curl", + "jsonlite" + ], + "Copyright": "see file COPYRIGHTS", + "SystemRequirements": "zlib, libpng, FreeType", + "URL": "https://github.com/yixuan/sysfonts", + "BugReports": "https://github.com/yixuan/sysfonts/issues", + "License": "GPL-2", + "RoxygenNote": "7.3.1", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Repository": "P3M" + }, + "systemfonts": { + "Package": "systemfonts", + "Version": "1.3.1", + "Source": "Repository", + "Type": "Package", + "Title": "System Native Font Finding", + "Authors@R": "c( person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Jeroen\", \"Ooms\", , \"jeroen@berkeley.edu\", role = \"aut\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Devon\", \"Govett\", role = \"aut\", comment = \"Author of font-manager\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides system native access to the font catalogue. As font handling varies between systems it is difficult to correctly locate installed fonts across different operating systems. The 'systemfonts' package provides bindings to the native libraries on Windows, macOS and Linux for finding font files that can then be used further by e.g. graphic devices. The main use is intended to be from compiled code but 'systemfonts' also provides access from R.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/systemfonts, https://systemfonts.r-lib.org", + "BugReports": "https://github.com/r-lib/systemfonts/issues", + "Depends": [ + "R (>= 3.2.0)" + ], + "Imports": [ + "base64enc", + "grid", + "jsonlite", + "lifecycle", + "tools", + "utils" + ], + "Suggests": [ + "covr", + "farver", + "ggplot2", + "graphics", + "knitr", + "ragg", + "rmarkdown", + "svglite", + "testthat (>= 2.1.0)" + ], + "LinkingTo": [ + "cpp11 (>= 0.2.1)" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/usethis/last-upkeep": "2025-04-23", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "fontconfig, freetype2", + "NeedsCompilation": "yes", + "Author": "Thomas Lin Pedersen [aut, cre] (ORCID: ), Jeroen Ooms [aut] (ORCID: ), Devon Govett [aut] (Author of font-manager), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "tailor": { + "Package": "tailor", + "Version": "0.1.0", + "Source": "Repository", + "Title": "Iterative Steps for Postprocessing Model Predictions", + "Authors@R": "c( person(\"Simon\", \"Couch\", , \"simon.couch@posit.co\", role = \"aut\"), person(\"Hannah\", \"Frick\", , \"hannah@posit.co\", role = \"aut\"), person(\"Emil\", \"HvitFeldt\", , \"emil.hvitfeldt@posit.co\", role = \"aut\"), person(\"Max\", \"Kuhn\", , \"max@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-2402-136X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Postprocessors refine predictions outputted from machine learning models to improve predictive performance or better satisfy distributional limitations. This package introduces 'tailor' objects, which compose iterative adjustments to model predictions. A number of pre-written adjustments are provided with the package, such as calibration. See Lichtenstein, Fischhoff, and Phillips (1977) . Other methods and utilities to compose new adjustments are also included. Tailors are tightly integrated with the 'tidymodels' framework.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/tidymodels/tailor, https://tailor.tidymodels.org", + "BugReports": "https://github.com/tidymodels/tailor/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli", + "dplyr", + "generics", + "hardhat", + "purrr", + "rlang (>= 1.1.0)", + "tibble", + "tidyselect", + "vctrs" + ], + "Suggests": [ + "betacal", + "dials (>= 1.4.1)", + "mgcv", + "modeldata", + "probably (>= 1.1.0)", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-29", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Simon Couch [aut], Hannah Frick [aut], Emil HvitFeldt [aut], Max Kuhn [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Max Kuhn ", + "Repository": "RSPM" + }, + "tarchetypes": { + "Package": "tarchetypes", + "Version": "0.13.2", + "Source": "Repository", + "Title": "Archetypes for Targets", + "Description": "Function-oriented Make-like declarative pipelines for Statistics and data science are supported in the 'targets' R package. As an extension to 'targets', the 'tarchetypes' package provides convenient user-side functions to make 'targets' easier to use. By establishing reusable archetypes for common kinds of targets and pipelines, these functions help express complicated reproducible pipelines concisely and compactly. The methods in this package were influenced by the 'targets' R package. by Will Landau (2018) .", + "License": "MIT + file LICENSE", + "URL": "https://docs.ropensci.org/tarchetypes/, https://github.com/ropensci/tarchetypes", + "BugReports": "https://github.com/ropensci/tarchetypes/issues", + "Authors@R": "c( person( given = c(\"William\", \"Michael\"), family = \"Landau\", role = c(\"aut\", \"cre\"), email = \"will.landau.oss@gmail.com\", comment = c(ORCID = \"0000-0003-1878-3253\") ), person( given = \"Rudolf\", family = \"Siegel\", role = \"ctb\", comment = c(ORCID = \"0000-0002-6021-804X\") ), person( given = \"Samantha\", family = \"Oliver\", role = \"rev\", comment = c(ORCID = \"0000-0001-5668-1165\") ), person( given = \"Tristan\", family = \"Mahr\", role = \"rev\", comment = c(ORCID = \"0000-0002-8890-5116\") ), person( family = \"Eli Lilly and Company\", role = c(\"cph\", \"fnd\") ))", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "dplyr (>= 1.0.0)", + "fs (>= 1.4.2)", + "parallel", + "rlang (>= 0.4.7)", + "secretbase (>= 0.4.0)", + "targets (>= 1.6.0)", + "tibble (>= 3.0.1)", + "tidyselect (>= 1.1.0)", + "utils", + "vctrs (>= 0.3.4)", + "withr (>= 2.1.2)" + ], + "Suggests": [ + "curl (>= 4.3)", + "knitr (>= 1.28)", + "nanoparquet", + "quarto (>= 1.4)", + "rmarkdown (>= 2.1)", + "testthat (>= 3.0.0)", + "xml2 (>= 1.3.2)" + ], + "Encoding": "UTF-8", + "Language": "en-US", + "Config/testthat/edition": "3", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "William Michael Landau [aut, cre] (ORCID: ), Rudolf Siegel [ctb] (ORCID: ), Samantha Oliver [rev] (ORCID: ), Tristan Mahr [rev] (ORCID: ), Eli Lilly and Company [cph, fnd]", + "Maintainer": "William Michael Landau ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "targets": { + "Package": "targets", + "Version": "1.11.4", + "Source": "Repository", + "Title": "Dynamic Function-Oriented 'Make'-Like Declarative Pipelines", + "Description": "Pipeline tools coordinate the pieces of computationally demanding analysis projects. The 'targets' package is a 'Make'-like pipeline tool for statistics and data science in R. The package skips costly runtime for tasks that are already up to date, orchestrates the necessary computation with implicit parallel computing, and abstracts files as R objects. If all the current output matches the current upstream code and data, then the whole pipeline is up to date, and the results are more trustworthy than otherwise. The methodology in this package borrows from GNU 'Make' (2015, ISBN:978-9881443519) and 'drake' (2018, ).", + "License": "MIT + file LICENSE", + "URL": "https://docs.ropensci.org/targets/, https://github.com/ropensci/targets", + "BugReports": "https://github.com/ropensci/targets/issues", + "Authors@R": "c( person( given = c(\"William\", \"Michael\"), family = \"Landau\", role = c(\"aut\", \"cre\"), email = \"will.landau.oss@gmail.com\", comment = c(ORCID = \"0000-0003-1878-3253\") ), person( given = c(\"Matthew\", \"T.\"), family = \"Warkentin\", role = \"ctb\" ), person( given = \"Mark\", family = \"Edmondson\", email = \"r@sunholo.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8434-3881\") ), person( given = \"Samantha\", family = \"Oliver\", role = \"rev\", comment = c(ORCID = \"0000-0001-5668-1165\") ), person( given = \"Tristan\", family = \"Mahr\", role = \"rev\", comment = c(ORCID = \"0000-0002-8890-5116\") ), person( family = \"Eli Lilly and Company\", role = c(\"cph\", \"fnd\") ))", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "base64url (>= 1.4)", + "callr (>= 3.7.0)", + "cli (>= 2.0.2)", + "codetools (>= 0.2.16)", + "data.table (>= 1.16.0)", + "igraph (>= 2.0.0)", + "knitr (>= 1.34)", + "prettyunits (>= 1.1.0)", + "ps (>= 1.8.0)", + "R6 (>= 2.4.1)", + "rlang (>= 1.0.0)", + "secretbase (>= 0.5.0)", + "stats", + "tibble (>= 3.0.1)", + "tidyselect (>= 1.1.0)", + "tools", + "utils", + "vctrs (>= 0.2.4)", + "yaml (>= 2.2.1)" + ], + "Suggests": [ + "autometric (>= 0.1.0)", + "bslib", + "clustermq (>= 0.9.2)", + "crew (>= 0.9.0)", + "curl (>= 4.3)", + "DT (>= 0.14)", + "dplyr (>= 1.0.0)", + "fst (>= 0.9.2)", + "future (>= 1.19.1)", + "future.batchtools (>= 0.9.0)", + "future.callr (>= 0.6.0)", + "gargle (>= 1.2.0)", + "googleCloudStorageR (>= 0.7.0)", + "gt (>= 0.2.2)", + "keras (>= 2.2.5.0)", + "markdown (>= 1.1)", + "nanonext (>= 0.12.0)", + "rmarkdown (>= 2.4)", + "parallelly (>= 1.35.0)", + "paws.common (>= 0.6.4)", + "paws.storage (>= 0.4.0)", + "pkgload (>= 1.1.0)", + "processx (>= 3.4.3)", + "qs2", + "reprex (>= 2.0.0)", + "rstudioapi (>= 0.11)", + "R.utils (>= 2.6.0)", + "shiny (>= 1.5.0)", + "shinybusy (>= 0.2.2)", + "shinyWidgets (>= 0.5.4)", + "tarchetypes", + "testthat (>= 3.0.0)", + "torch (>= 0.1.0)", + "usethis (>= 1.6.3)", + "visNetwork (>= 2.1.2)" + ], + "Encoding": "UTF-8", + "Language": "en-US", + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "William Michael Landau [aut, cre] (ORCID: ), Matthew T. Warkentin [ctb], Mark Edmondson [ctb] (ORCID: ), Samantha Oliver [rev] (ORCID: ), Tristan Mahr [rev] (ORCID: ), Eli Lilly and Company [cph, fnd]", + "Maintainer": "William Michael Landau ", + "Repository": "RSPM" + }, + "terra": { + "Package": "terra", + "Version": "1.8-93", + "Source": "Repository", + "Type": "Package", + "Title": "Spatial Data Analysis", + "Date": "2026-01-11", + "Depends": [ + "R (>= 3.5.0)", + "methods" + ], + "Suggests": [ + "parallel", + "tinytest", + "ncdf4", + "sf (>= 0.9-8)", + "deldir", + "XML", + "leaflet (>= 2.2.1)", + "htmlwidgets" + ], + "LinkingTo": [ + "Rcpp" + ], + "Imports": [ + "Rcpp (>= 1.0-10)" + ], + "SystemRequirements": "C++17, GDAL (>= 2.2.3), GEOS (>= 3.4.0), PROJ (>= 4.9.3), TBB, sqlite3", + "Encoding": "UTF-8", + "Language": "en-US", + "Maintainer": "Robert J. Hijmans ", + "Description": "Methods for spatial data analysis with vector (points, lines, polygons) and raster (grid) data. Methods for vector data include geometric operations such as intersect and buffer. Raster methods include local, focal, global, zonal and geometric operations. The predict and interpolate methods facilitate the use of regression type (interpolation, machine learning) models for spatial prediction, including with satellite remote sensing data. Processing of very large files is supported. See the manual and tutorials on to get started.", + "License": "GPL (>= 3)", + "URL": "https://rspatial.org/, https://rspatial.github.io/terra/", + "BugReports": "https://github.com/rspatial/terra/issues", + "LazyLoad": "yes", + "Authors@R": "c( person(\"Robert J.\", \"Hijmans\", role=c(\"cre\", \"aut\"), email=\"r.hijmans@gmail.com\", comment=c(ORCID=\"0000-0001-5872-2872\")),\t\t\t person(\"Márcia\", \"Barbosa\", role=\"ctb\", comment=c(ORCID=\"0000-0001-8972-7713\")), person(\"Roger\", \"Bivand\", role=\"ctb\", comment=c(ORCID=\"0000-0003-2392-6140\")), person(\"Andrew\", \"Brown\", role=\"ctb\", comment=c(ORCID=\"0000-0002-4565-533X\")), person(\"Michael\", \"Chirico\", role=\"ctb\", comment=c(ORCID=\"0000-0003-0787-087X\")), person(\"Emanuele\", \"Cordano\", role=\"ctb\",comment=c(ORCID=\"0000-0002-3508-5898\")), person(\"Krzysztof\", \"Dyba\", role=\"ctb\", comment=c(ORCID=\"0000-0002-8614-3816\")), person(\"Edzer\", \"Pebesma\", role=\"ctb\", comment=c(ORCID=\"0000-0001-8049-7069\")), person(\"Barry\", \"Rowlingson\", role=\"ctb\", comment=c(ORCID=\"0000-0002-8586-6625\")), person(\"Michael D.\", \"Sumner\", role=\"ctb\", comment=c(ORCID=\"0000-0002-2471-7511\")))", + "NeedsCompilation": "yes", + "Author": "Robert J. Hijmans [cre, aut] (ORCID: ), Márcia Barbosa [ctb] (ORCID: ), Roger Bivand [ctb] (ORCID: ), Andrew Brown [ctb] (ORCID: ), Michael Chirico [ctb] (ORCID: ), Emanuele Cordano [ctb] (ORCID: ), Krzysztof Dyba [ctb] (ORCID: ), Edzer Pebesma [ctb] (ORCID: ), Barry Rowlingson [ctb] (ORCID: ), Michael D. Sumner [ctb] (ORCID: )", + "Repository": "P3M" + }, + "textshaping": { + "Package": "textshaping", + "Version": "1.0.4", + "Source": "Repository", + "Title": "Bindings to the 'HarfBuzz' and 'Fribidi' Libraries for Text Shaping", + "Authors@R": "c( person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides access to the text shaping functionality in the 'HarfBuzz' library and the bidirectional algorithm in the 'Fribidi' library. 'textshaping' is a low-level utility package mainly for graphic devices that expands upon the font tool-set provided by the 'systemfonts' package.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/textshaping", + "BugReports": "https://github.com/r-lib/textshaping/issues", + "Depends": [ + "R (>= 3.2.0)" + ], + "Imports": [ + "lifecycle", + "stats", + "stringi", + "systemfonts (>= 1.3.0)", + "utils" + ], + "Suggests": [ + "covr", + "grDevices", + "grid", + "knitr", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "cpp11 (>= 0.2.1)", + "systemfonts (>= 1.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-23", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "freetype2, harfbuzz, fribidi", + "NeedsCompilation": "yes", + "Author": "Thomas Lin Pedersen [cre, aut] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "tibble": { + "Package": "tibble", + "Version": "3.3.1", + "Source": "Repository", + "Title": "Simple Data Frames", + "Authors@R": "c( person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = \"aut\"), person(\"Romain\", \"Francois\", , \"romain@r-enthusiasts.com\", role = \"ctb\"), person(\"Jennifer\", \"Bryan\", , \"jenny@rstudio.com\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides a 'tbl_df' class (the 'tibble') with stricter checking and better formatting than the traditional data frame.", + "License": "MIT + file LICENSE", + "URL": "https://tibble.tidyverse.org/, https://github.com/tidyverse/tibble", + "BugReports": "https://github.com/tidyverse/tibble/issues", + "Depends": [ + "R (>= 3.4.0)" + ], + "Imports": [ + "cli", + "lifecycle (>= 1.0.0)", + "magrittr", + "methods", + "pillar (>= 1.8.1)", + "pkgconfig", + "rlang (>= 1.0.2)", + "utils", + "vctrs (>= 0.5.0)" + ], + "Suggests": [ + "bench", + "bit64", + "blob", + "brio", + "callr", + "DiagrammeR", + "dplyr", + "evaluate", + "formattable", + "ggplot2", + "here", + "hms", + "htmltools", + "knitr", + "lubridate", + "nycflights13", + "pkgload", + "purrr", + "rmarkdown", + "stringi", + "testthat (>= 3.0.2)", + "tidyr", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/autostyle/rmd": "false", + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "vignette-formats, as_tibble, add, invariants", + "Config/usethis/last-upkeep": "2025-06-07", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "NeedsCompilation": "yes", + "Author": "Kirill Müller [aut, cre] (ORCID: ), Hadley Wickham [aut], Romain Francois [ctb], Jennifer Bryan [ctb], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Kirill Müller ", + "Repository": "P3M" + }, + "tidymodels": { + "Package": "tidymodels", + "Version": "1.4.1", + "Source": "Repository", + "Title": "Easily Install and Load the 'Tidymodels' Packages", + "Authors@R": "c( person(\"Max\", \"Kuhn\", , \"max@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-2402-136X\")), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "The tidy modeling \"verse\" is a collection of packages for modeling and statistical analysis that share the underlying design philosophy, grammar, and data structures of the tidyverse.", + "License": "MIT + file LICENSE", + "URL": "https://tidymodels.tidymodels.org, https://github.com/tidymodels/tidymodels", + "BugReports": "https://github.com/tidymodels/tidymodels/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "broom (>= 1.0.9)", + "cli (>= 3.6.5)", + "conflicted (>= 1.2.0)", + "dials (>= 1.4.2)", + "dplyr (>= 1.1.4)", + "ggplot2 (>= 3.5.2)", + "hardhat (>= 1.4.2)", + "infer (>= 1.0.9)", + "modeldata (>= 1.5.1)", + "parsnip (>= 1.3.3)", + "purrr (>= 1.1.0)", + "recipes (>= 1.3.1)", + "rlang (>= 1.1.6)", + "rsample (>= 1.3.1)", + "rstudioapi (>= 0.17.1)", + "tailor (>= 0.1.0)", + "tidyr (>= 1.3.1)", + "tune (>= 2.0.0)", + "workflows (>= 1.3.0)", + "workflowsets (>= 1.1.1)", + "yardstick (>= 1.3.2)" + ], + "Suggests": [ + "covr", + "glue", + "knitr", + "rmarkdown", + "testthat (>= 3.0.0)", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-27", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Max Kuhn [aut, cre] (ORCID: ), Hadley Wickham [aut], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Max Kuhn ", + "Repository": "RSPM" + }, + "tidyr": { + "Package": "tidyr", + "Version": "1.3.2", + "Source": "Repository", + "Title": "Tidy Messy Data", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = \"aut\"), person(\"Maximilian\", \"Girlich\", role = \"aut\"), person(\"Kevin\", \"Ushey\", , \"kevin@posit.co\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Tools to help to create tidy data, where each column is a variable, each row is an observation, and each cell contains a single value. 'tidyr' contains tools for changing the shape (pivoting) and hierarchy (nesting and 'unnesting') of a dataset, turning deeply nested lists into rectangular data frames ('rectangling'), and extracting values out of string columns. It also includes tools for working with missing values (both implicit and explicit).", + "License": "MIT + file LICENSE", + "URL": "https://tidyr.tidyverse.org, https://github.com/tidyverse/tidyr", + "BugReports": "https://github.com/tidyverse/tidyr/issues", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "cli (>= 3.4.1)", + "dplyr (>= 1.1.0)", + "glue", + "lifecycle (>= 1.0.3)", + "magrittr", + "purrr (>= 1.0.1)", + "rlang (>= 1.1.1)", + "stringr (>= 1.5.0)", + "tibble (>= 2.1.1)", + "tidyselect (>= 1.2.1)", + "utils", + "vctrs (>= 0.5.2)" + ], + "Suggests": [ + "covr", + "data.table", + "knitr", + "readr", + "repurrrsive (>= 1.1.0)", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "cpp11 (>= 0.4.0)" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre], Davis Vaughan [aut], Maximilian Girlich [aut], Kevin Ushey [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "RSPM" + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.1", + "Source": "Repository", + "Title": "Select from a Set of Strings", + "Authors@R": "c( person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A backend for the selecting functions of the 'tidyverse'. It makes it easy to implement select-like functions in your own packages in a way that is consistent with other 'tidyverse' interfaces for selection.", + "License": "MIT + file LICENSE", + "URL": "https://tidyselect.r-lib.org, https://github.com/r-lib/tidyselect", + "BugReports": "https://github.com/r-lib/tidyselect/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "cli (>= 3.3.0)", + "glue (>= 1.3.0)", + "lifecycle (>= 1.0.3)", + "rlang (>= 1.0.4)", + "vctrs (>= 0.5.2)", + "withr" + ], + "Suggests": [ + "covr", + "crayon", + "dplyr", + "knitr", + "magrittr", + "rmarkdown", + "stringr", + "testthat (>= 3.1.1)", + "tibble (>= 2.1.3)" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Config/testthat/edition": "3", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.0.9000", + "NeedsCompilation": "yes", + "Author": "Lionel Henry [aut, cre], Hadley Wickham [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "RSPM" + }, + "tidyterra": { + "Package": "tidyterra", + "Version": "0.7.2", + "Source": "Repository", + "Title": "'tidyverse' Methods and 'ggplot2' Helpers for 'terra' Objects", + "Authors@R": "c( person(\"Diego\", \"Hernangómez\", , \"diego.hernangomezherrero@gmail.com\", role = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0001-8457-4658\")), person(\"Dewey\", \"Dunnington\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9415-4582\", \"for ggspatial code\")), person(\"ggplot2 authors\", role = \"cph\", comment = \"for contour code\"), person(\"Andrea\", \"Manica\", role = \"ctb\") )", + "Description": "Extension of the 'tidyverse' for 'SpatRaster' and 'SpatVector' objects of the 'terra' package. It includes also new 'geom_' functions that provide a convenient way of visualizing 'terra' objects with 'ggplot2'.", + "License": "MIT + file LICENSE", + "URL": "https://dieghernan.github.io/tidyterra/, https://github.com/dieghernan/tidyterra", + "BugReports": "https://github.com/dieghernan/tidyterra/issues", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "cli (>= 3.0.0)", + "data.table", + "dplyr (>= 1.0.0)", + "ggplot2 (>= 3.5.0)", + "magrittr", + "rlang", + "scales", + "sf (>= 1.0.0)", + "terra (>= 1.8-10)", + "tibble (>= 3.0.0)", + "tidyr (>= 1.0.0)" + ], + "Suggests": [ + "hexbin", + "isoband", + "knitr", + "lifecycle", + "maptiles", + "rmarkdown", + "s2", + "testthat (>= 3.0.0)", + "vctrs", + "vdiffr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/coverage": "covr", + "Config/Needs/website": "geodata, dieghernan/gitdevr, ragg, styler, metR, ggspatial, cpp11, remotes, gganimate, gifski", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "false", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.2", + "X-schema.org-keywords": "r, terra, ggplot-extension, r-spatial, rspatial, cran, cran-r, r-package, rstats, rstats-package", + "NeedsCompilation": "no", + "Author": "Diego Hernangómez [aut, cre, cph] (), Dewey Dunnington [ctb] (, for ggspatial code), ggplot2 authors [cph] (for contour code), Andrea Manica [ctb]", + "Maintainer": "Diego Hernangómez ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "tidyverse": { + "Package": "tidyverse", + "Version": "2.0.0", + "Source": "Repository", + "Title": "Easily Install and Load the 'Tidyverse'", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = c(\"aut\", \"cre\")), person(\"RStudio\", role = c(\"cph\", \"fnd\")) )", + "Description": "The 'tidyverse' is a set of packages that work in harmony because they share common data representations and 'API' design. This package is designed to make it easy to install and load multiple 'tidyverse' packages in a single step. Learn more about the 'tidyverse' at .", + "License": "MIT + file LICENSE", + "URL": "https://tidyverse.tidyverse.org, https://github.com/tidyverse/tidyverse", + "BugReports": "https://github.com/tidyverse/tidyverse/issues", + "Depends": [ + "R (>= 3.3)" + ], + "Imports": [ + "broom (>= 1.0.3)", + "conflicted (>= 1.2.0)", + "cli (>= 3.6.0)", + "dbplyr (>= 2.3.0)", + "dplyr (>= 1.1.0)", + "dtplyr (>= 1.2.2)", + "forcats (>= 1.0.0)", + "ggplot2 (>= 3.4.1)", + "googledrive (>= 2.0.0)", + "googlesheets4 (>= 1.0.1)", + "haven (>= 2.5.1)", + "hms (>= 1.1.2)", + "httr (>= 1.4.4)", + "jsonlite (>= 1.8.4)", + "lubridate (>= 1.9.2)", + "magrittr (>= 2.0.3)", + "modelr (>= 0.1.10)", + "pillar (>= 1.8.1)", + "purrr (>= 1.0.1)", + "ragg (>= 1.2.5)", + "readr (>= 2.1.4)", + "readxl (>= 1.4.2)", + "reprex (>= 2.0.2)", + "rlang (>= 1.0.6)", + "rstudioapi (>= 0.14)", + "rvest (>= 1.0.3)", + "stringr (>= 1.5.0)", + "tibble (>= 3.1.8)", + "tidyr (>= 1.3.0)", + "xml2 (>= 1.3.3)" + ], + "Suggests": [ + "covr (>= 3.6.1)", + "feather (>= 0.3.5)", + "glue (>= 1.6.2)", + "mockr (>= 0.2.0)", + "knitr (>= 1.41)", + "rmarkdown (>= 2.20)", + "testthat (>= 3.1.6)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], RStudio [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "RSPM" + }, + "tigris": { + "Package": "tigris", + "Version": "2.2.1", + "Source": "Repository", + "Type": "Package", + "Title": "Load Census TIGER/Line Shapefiles", + "Date": "2025-04-15", + "Authors@R": "c( person(given=\"Kyle\", family=\"Walker\", email=\"kyle@walker-data.com\", role=c(\"aut\", \"cre\")), person(given=\"Bob\", family=\"Rudis\", email=\"bob@rudis.net\", role=\"ctb\") )", + "URL": "https://github.com/walkerke/tigris", + "BugReports": "https://github.com/walkerke/tigris/issues", + "Description": "Download TIGER/Line shapefiles from the United States Census Bureau () and load into R as 'sf' objects.", + "License": "MIT + file LICENSE", + "LazyData": "TRUE", + "Encoding": "UTF-8", + "Depends": [ + "R (>= 3.3.0)" + ], + "Suggests": [ + "testthat", + "ggplot2", + "ggthemes", + "leaflet", + "knitr", + "tidycensus", + "sp" + ], + "Imports": [ + "stringr", + "magrittr", + "utils", + "rappdirs", + "httr", + "uuid", + "sf", + "dplyr", + "methods" + ], + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Kyle Walker [aut, cre], Bob Rudis [ctb]", + "Maintainer": "Kyle Walker ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "timeDate": { + "Package": "timeDate", + "Version": "4051.111", + "Source": "Repository", + "Title": "Rmetrics - Chronological and Calendar Objects", + "Authors@R": "c(person(\"Diethelm\", \"Wuertz\", role=\"aut\", comment = \"original code\") , person(\"Tobias\", \"Setz\", role = c(\"aut\"), email = \"tobias.setz@live.com\") , person(\"Yohan\", \"Chalabi\", role = \"aut\") , person(\"Martin\",\"Maechler\", role = \"ctb\", email = \"maechler@stat.math.ethz.ch\", comment = c(ORCID = \"0000-0002-8685-9910\")) , person(given = c(\"Joe\", \"W.\"), family = \"Byers\", role = \"ctb\") , person(given = c(\"Georgi\", \"N.\"), family = \"Boshnakov\", role = c(\"cre\", \"aut\"), email = \"georgi.boshnakov@manchester.ac.uk\", comment = c(ORCID = \"0000-0003-2839-346X\")) )", + "Description": "The 'timeDate' class fulfils the conventions of the ISO 8601 standard as well as of the ANSI C and POSIX standards. Beyond these standards it provides the \"Financial Center\" concept which allows to handle data records collected in different time zones and mix them up to have always the proper time stamps with respect to your personal financial center, or alternatively to the GMT reference time. It can thus also handle time stamps from historical data records from the same time zone, even if the financial centers changed day light saving times at different calendar dates.", + "Depends": [ + "R (>= 3.6.0)", + "methods" + ], + "Imports": [ + "graphics", + "utils", + "stats" + ], + "Suggests": [ + "RUnit" + ], + "License": "GPL (>= 2)", + "Encoding": "UTF-8", + "URL": "https://geobosh.github.io/timeDateDoc/ (doc), https://r-forge.r-project.org/scm/viewvc.php/pkg/timeDate/?root=rmetrics (devel), https://www.rmetrics.org", + "BugReports": "https://r-forge.r-project.org/projects/rmetrics", + "NeedsCompilation": "no", + "Author": "Diethelm Wuertz [aut] (original code), Tobias Setz [aut], Yohan Chalabi [aut], Martin Maechler [ctb] (ORCID: ), Joe W. Byers [ctb], Georgi N. Boshnakov [cre, aut] (ORCID: )", + "Maintainer": "Georgi N. Boshnakov ", + "Repository": "RSPM" + }, + "timechange": { + "Package": "timechange", + "Version": "0.3.0", + "Source": "Repository", + "Title": "Efficient Manipulation of Date-Times", + "Authors@R": "c(person(\"Vitalie\", \"Spinu\", email = \"spinuvit@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Google Inc.\", role = c(\"ctb\", \"cph\")))", + "Description": "Efficient routines for manipulation of date-time objects while accounting for time-zones and daylight saving times. The package includes utilities for updating of date-time components (year, month, day etc.), modification of time-zones, rounding of date-times, period addition and subtraction etc. Parts of the 'CCTZ' source code, released under the Apache 2.0 License, are included in this package. See for more details.", + "Depends": [ + "R (>= 3.3)" + ], + "License": "GPL (>= 3)", + "Encoding": "UTF-8", + "LinkingTo": [ + "cpp11 (>= 0.2.7)" + ], + "Suggests": [ + "testthat (>= 0.7.1.99)", + "knitr" + ], + "SystemRequirements": "A system with zoneinfo data (e.g. /usr/share/zoneinfo) as well as a recent-enough C++11 compiler (such as g++-4.8 or later). On Windows the zoneinfo included with R is used.", + "BugReports": "https://github.com/vspinu/timechange/issues", + "URL": "https://github.com/vspinu/timechange/", + "RoxygenNote": "7.2.1", + "NeedsCompilation": "yes", + "Author": "Vitalie Spinu [aut, cre], Google Inc. [ctb, cph]", + "Maintainer": "Vitalie Spinu ", + "Repository": "RSPM" + }, + "tinytex": { + "Package": "tinytex", + "Version": "0.58", + "Source": "Repository", + "Type": "Package", + "Title": "Helper Functions to Install and Maintain TeX Live, and Compile LaTeX Documents", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\", \"cph\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"Christophe\", \"Dervieux\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Devon\", \"Ryan\", role = \"ctb\", email = \"dpryan79@gmail.com\", comment = c(ORCID = \"0000-0002-8549-0971\")), person(\"Ethan\", \"Heinzen\", role = \"ctb\"), person(\"Fernando\", \"Cagua\", role = \"ctb\"), person() )", + "Description": "Helper functions to install and maintain the 'LaTeX' distribution named 'TinyTeX' (), a lightweight, cross-platform, portable, and easy-to-maintain version of 'TeX Live'. This package also contains helper functions to compile 'LaTeX' documents, and install missing 'LaTeX' packages automatically.", + "Imports": [ + "xfun (>= 0.48)" + ], + "Suggests": [ + "testit", + "rstudioapi" + ], + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/tinytex", + "BugReports": "https://github.com/rstudio/tinytex/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre, cph] (ORCID: ), Posit Software, PBC [cph, fnd], Christophe Dervieux [ctb] (ORCID: ), Devon Ryan [ctb] (ORCID: ), Ethan Heinzen [ctb], Fernando Cagua [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "tune": { + "Package": "tune", + "Version": "2.0.1", + "Source": "Repository", + "Title": "Tidy Tuning Tools", + "Authors@R": "c( person(\"Max\", \"Kuhn\", , \"max@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-2402-136X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "The ability to tune models is important. 'tune' contains functions and classes to be used in conjunction with other 'tidymodels' packages for finding reasonable values of hyper-parameters in models, pre-processing methods, and post-processing steps.", + "License": "MIT + file LICENSE", + "URL": "https://tune.tidymodels.org/, https://github.com/tidymodels/tune", + "BugReports": "https://github.com/tidymodels/tune/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.3.0)", + "dials (>= 1.3.0.9000)", + "dplyr (>= 1.1.0)", + "generics (>= 0.1.2)", + "ggplot2", + "glue (>= 1.6.2)", + "GPfit", + "hardhat (>= 1.4.2)", + "parallel", + "parsnip (>= 1.2.1.9003)", + "purrr (>= 1.0.0)", + "recipes (>= 1.1.0.9001)", + "rlang (>= 1.1.4)", + "rsample (>= 1.3.0.9003)", + "tailor (>= 0.1.0)", + "tibble (>= 3.1.0)", + "tidyr (>= 1.2.0)", + "tidyselect (>= 1.1.2)", + "vctrs (>= 0.6.1)", + "withr", + "workflows (>= 1.3.0)", + "yardstick (>= 1.3.0)" + ], + "Suggests": [ + "C50", + "censored (>= 0.3.0)", + "covr", + "future (>= 1.33.0)", + "future.apply", + "kernlab", + "kknn", + "knitr", + "mgcv", + "mirai (>= 2.4.0)", + "modeldata", + "probably", + "scales", + "spelling", + "splines2", + "survival", + "testthat (>= 3.0.0)", + "xgboost", + "xml2" + ], + "Config/Needs/website": "pkgdown, tidymodels, kknn, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-US", + "LazyData": "true", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Max Kuhn [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Max Kuhn ", + "Repository": "RSPM" + }, + "tzdb": { + "Package": "tzdb", + "Version": "0.5.0", + "Source": "Repository", + "Title": "Time Zone Database Information", + "Authors@R": "c( person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = c(\"aut\", \"cre\")), person(\"Howard\", \"Hinnant\", role = \"cph\", comment = \"Author of the included date library\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides an up-to-date copy of the Internet Assigned Numbers Authority (IANA) Time Zone Database. It is updated periodically to reflect changes made by political bodies to time zone boundaries, UTC offsets, and daylight saving time rules. Additionally, this package provides a C++ interface for working with the 'date' library. 'date' provides comprehensive support for working with dates and date-times, which this package exposes to make it easier for other R packages to utilize. Headers are provided for calendar specific calculations, along with a limited interface for time zone manipulations.", + "License": "MIT + file LICENSE", + "URL": "https://tzdb.r-lib.org, https://github.com/r-lib/tzdb", + "BugReports": "https://github.com/r-lib/tzdb/issues", + "Depends": [ + "R (>= 4.0.0)" + ], + "Suggests": [ + "covr", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "cpp11 (>= 0.5.2)" + ], + "Biarch": "yes", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Davis Vaughan [aut, cre], Howard Hinnant [cph] (Author of the included date library), Posit Software, PBC [cph, fnd]", + "Maintainer": "Davis Vaughan ", + "Repository": "RSPM" + }, + "umap": { + "Package": "umap", + "Version": "0.2.10.0", + "Source": "Repository", + "Title": "Uniform Manifold Approximation and Projection", + "Authors@R": "person(\"Tomasz\", \"Konopka\", , \"tokonopka@gmail.com\", role = c(\"aut\", \"cre\"))", + "Author": "Tomasz Konopka [aut, cre]", + "Maintainer": "Tomasz Konopka ", + "Description": "Uniform manifold approximation and projection is a technique for dimension reduction. The algorithm was described by McInnes and Healy (2018) in . This package provides an interface for two implementations. One is written from scratch, including components for nearest-neighbor search and for embedding. The second implementation is a wrapper for 'python' package 'umap-learn' (requires separate installation, see vignette for more details).", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "Matrix", + "methods", + "openssl", + "reticulate", + "Rcpp (>= 0.12.6)", + "RSpectra", + "stats" + ], + "License": "MIT + file LICENSE", + "URL": "https://github.com/tkonopka/umap", + "BugReports": "https://github.com/tkonopka/umap/issues", + "LinkingTo": [ + "Rcpp" + ], + "Suggests": [ + "knitr", + "rmarkdown", + "testthat" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.2", + "NeedsCompilation": "yes", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "units": { + "Package": "units", + "Version": "1.0-0", + "Source": "Repository", + "Title": "Measurement Units for R Vectors", + "Authors@R": "c(person(\"Edzer\", \"Pebesma\", role = c(\"aut\", \"cre\"), email = \"edzer.pebesma@uni-muenster.de\", comment = c(ORCID = \"0000-0001-8049-7069\")), person(\"Thomas\", \"Mailund\", role = \"aut\", email = \"mailund@birc.au.dk\"), person(\"Tomasz\", \"Kalinowski\", role = \"aut\"), person(\"James\", \"Hiebert\", role = \"ctb\"), person(\"Iñaki\", \"Ucar\", role = \"aut\", email = \"iucar@fedoraproject.org\", comment = c(ORCID = \"0000-0001-6403-5550\")), person(\"Thomas Lin\", \"Pedersen\", role = \"ctb\") )", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "Rcpp" + ], + "LinkingTo": [ + "Rcpp (>= 0.12.10)" + ], + "Suggests": [ + "NISTunits", + "measurements", + "xml2", + "magrittr", + "pillar (>= 1.3.0)", + "dplyr (>= 1.0.0)", + "vctrs (>= 0.3.1)", + "ggplot2 (> 3.2.1)", + "testthat (>= 3.0.0)", + "vdiffr", + "knitr", + "rvest", + "rmarkdown" + ], + "VignetteBuilder": "knitr", + "Description": "Support for measurement units in R vectors, matrices and arrays: automatic propagation, conversion, derivation and simplification of units; raising errors in case of unit incompatibility. Compatible with the POSIXct, Date and difftime classes. Uses the UNIDATA udunits library and unit database for unit compatibility checking and conversion. Documentation about 'units' is provided in the paper by Pebesma, Mailund & Hiebert (2016, ), included in this package as a vignette; see 'citation(\"units\")' for details.", + "SystemRequirements": "udunits-2", + "License": "GPL-2", + "URL": "https://r-quantities.github.io/units/, https://github.com/r-quantities/units", + "BugReports": "https://github.com/r-quantities/units/issues", + "RoxygenNote": "7.3.3", + "Encoding": "UTF-8", + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Author": "Edzer Pebesma [aut, cre] (ORCID: ), Thomas Mailund [aut], Tomasz Kalinowski [aut], James Hiebert [ctb], Iñaki Ucar [aut] (ORCID: ), Thomas Lin Pedersen [ctb]", + "Maintainer": "Edzer Pebesma ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "utf8": { + "Package": "utf8", + "Version": "1.2.6", + "Source": "Repository", + "Title": "Unicode Text Processing", + "Authors@R": "c(person(given = c(\"Patrick\", \"O.\"), family = \"Perry\", role = c(\"aut\", \"cph\")), person(given = \"Kirill\", family = \"M\\u00fcller\", role = \"cre\", email = \"kirill@cynkra.com\", comment = c(ORCID = \"0000-0002-1416-3412\")), person(given = \"Unicode, Inc.\", role = c(\"cph\", \"dtc\"), comment = \"Unicode Character Database\"))", + "Description": "Process and print 'UTF-8' encoded international text (Unicode). Input, validate, normalize, encode, format, and display.", + "License": "Apache License (== 2.0) | file LICENSE", + "URL": "https://krlmlr.github.io/utf8/, https://github.com/krlmlr/utf8", + "BugReports": "https://github.com/krlmlr/utf8/issues", + "Depends": [ + "R (>= 2.10)" + ], + "Suggests": [ + "cli", + "covr", + "knitr", + "rlang", + "rmarkdown", + "testthat (>= 3.0.0)", + "withr" + ], + "VignetteBuilder": "knitr, rmarkdown", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2.9000", + "NeedsCompilation": "yes", + "Author": "Patrick O. Perry [aut, cph], Kirill Müller [cre] (ORCID: ), Unicode, Inc. [cph, dtc] (Unicode Character Database)", + "Maintainer": "Kirill Müller ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "uuid": { + "Package": "uuid", + "Version": "1.2-2", + "Source": "Repository", + "Title": "Tools for Generating and Handling of UUIDs", + "Author": "Simon Urbanek [aut, cre, cph] (https://urbanek.org, ORCID: ), Theodore Ts'o [aut, cph] (libuuid)", + "Maintainer": "Simon Urbanek ", + "Authors@R": "c(person(\"Simon\", \"Urbanek\", role=c(\"aut\",\"cre\",\"cph\"), email=\"Simon.Urbanek@r-project.org\", comment=c(\"https://urbanek.org\", ORCID=\"0000-0003-2297-1732\")), person(\"Theodore\",\"Ts'o\", email=\"tytso@thunk.org\", role=c(\"aut\",\"cph\"), comment=\"libuuid\"))", + "Depends": [ + "R (>= 2.9.0)" + ], + "Description": "Tools for generating and handling of UUIDs (Universally Unique Identifiers).", + "License": "MIT + file LICENSE", + "URL": "https://www.rforge.net/uuid", + "BugReports": "https://github.com/s-u/uuid/issues", + "NeedsCompilation": "yes", + "Repository": "RSPM", + "Encoding": "UTF-8" + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.7.1", + "Source": "Repository", + "Title": "Vector Helpers", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = \"aut\"), person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = c(\"aut\", \"cre\")), person(\"data.table team\", role = \"cph\", comment = \"Radix sort based on data.table's forder() and their contribution to R's order()\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Defines new notions of prototype and size that are used to provide tools for consistent and well-founded type-coercion and size-recycling, and are in turn connected to ideas of type- and size-stability useful for analysing function interfaces.", + "License": "MIT + file LICENSE", + "URL": "https://vctrs.r-lib.org/, https://github.com/r-lib/vctrs", + "BugReports": "https://github.com/r-lib/vctrs/issues", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "glue", + "lifecycle (>= 1.0.3)", + "rlang (>= 1.1.7)" + ], + "Suggests": [ + "bit64", + "covr", + "crayon", + "dplyr (>= 0.8.5)", + "generics", + "knitr", + "pillar (>= 1.4.4)", + "pkgdown (>= 2.0.1)", + "rmarkdown", + "testthat (>= 3.0.0)", + "tibble (>= 3.1.3)", + "waldo (>= 0.2.0)", + "withr", + "xml2", + "zeallot" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Encoding": "UTF-8", + "Language": "en-GB", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut], Lionel Henry [aut], Davis Vaughan [aut, cre], data.table team [cph] (Radix sort based on data.table's forder() and their contribution to R's order()), Posit Software, PBC [cph, fnd]", + "Maintainer": "Davis Vaughan ", + "Repository": "RSPM" + }, + "vip": { + "Package": "vip", + "Version": "0.4.5", + "Source": "Repository", + "Type": "Package", + "Title": "Variable Importance Plots", + "Authors@R": "c( person(c(\"Brandon\", \"M.\"), family = \"Greenwell\", email = \"greenwell.brandon@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-8120-0084\")), person(\"Brad\", \"Boehmke\", email = \"bradleyboehmke@gmail.com\", role = c(\"aut\"), comment = c(ORCID = \"0000-0002-3611-8516\")) )", + "Description": "A general framework for constructing variable importance plots from various types of machine learning models in R. Aside from some standard model- specific variable importance measures, this package also provides model- agnostic approaches that can be applied to any supervised learning algorithm. These include 1) an efficient permutation-based variable importance measure, 2) variable importance based on Shapley values (Strumbelj and Kononenko, 2014) , and 3) the variance-based approach described in Greenwell et al. (2018) . A variance-based method for quantifying the relative strength of interaction effects is also included (see the previous reference for details).", + "License": "GPL (>= 2)", + "URL": "https://github.com/koalaverse/vip/, https://koalaverse.github.io/vip/", + "BugReports": "https://github.com/koalaverse/vip/issues", + "Encoding": "UTF-8", + "VignetteBuilder": "knitr", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "foreach", + "ggplot2 (>= 0.9.0)", + "stats", + "tibble", + "utils", + "yardstick" + ], + "Suggests": [ + "bookdown", + "DT", + "covr", + "doParallel", + "dplyr", + "fastshap (>= 0.1.0)", + "knitr", + "lattice", + "mlbench", + "modeldata", + "NeuralNetTools", + "pdp", + "rmarkdown", + "tinytest (>= 1.4.1)", + "varImp" + ], + "Enhances": [ + "C50", + "caret", + "Cubist", + "earth", + "gbm", + "glmnet", + "h2o", + "lightgbm", + "mixOmics", + "mlr", + "mlr3", + "neuralnet", + "nnet", + "parsnip (>= 0.1.7)", + "party", + "partykit", + "pls", + "randomForest", + "ranger", + "rpart", + "RSNNS", + "sparklyr (>= 0.8.0)", + "tidymodels", + "workflows (>= 0.2.3)", + "xgboost" + ], + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Brandon M. Greenwell [aut, cre] (ORCID: ), Brad Boehmke [aut] (ORCID: )", + "Maintainer": "Brandon M. Greenwell ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "viridisLite": { + "Package": "viridisLite", + "Version": "0.4.2", + "Source": "Repository", + "Type": "Package", + "Title": "Colorblind-Friendly Color Maps (Lite Version)", + "Date": "2023-05-02", + "Authors@R": "c( person(\"Simon\", \"Garnier\", email = \"garnier@njit.edu\", role = c(\"aut\", \"cre\")), person(\"Noam\", \"Ross\", email = \"noam.ross@gmail.com\", role = c(\"ctb\", \"cph\")), person(\"Bob\", \"Rudis\", email = \"bob@rud.is\", role = c(\"ctb\", \"cph\")), person(\"Marco\", \"Sciaini\", email = \"sciaini.marco@gmail.com\", role = c(\"ctb\", \"cph\")), person(\"Antônio Pedro\", \"Camargo\", role = c(\"ctb\", \"cph\")), person(\"Cédric\", \"Scherer\", email = \"scherer@izw-berlin.de\", role = c(\"ctb\", \"cph\")) )", + "Maintainer": "Simon Garnier ", + "Description": "Color maps designed to improve graph readability for readers with common forms of color blindness and/or color vision deficiency. The color maps are also perceptually-uniform, both in regular form and also when converted to black-and-white for printing. This is the 'lite' version of the 'viridis' package that also contains 'ggplot2' bindings for discrete and continuous color and fill scales and can be found at .", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Depends": [ + "R (>= 2.10)" + ], + "Suggests": [ + "hexbin (>= 1.27.0)", + "ggplot2 (>= 1.0.1)", + "testthat", + "covr" + ], + "URL": "https://sjmgarnier.github.io/viridisLite/, https://github.com/sjmgarnier/viridisLite/", + "BugReports": "https://github.com/sjmgarnier/viridisLite/issues/", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Simon Garnier [aut, cre], Noam Ross [ctb, cph], Bob Rudis [ctb, cph], Marco Sciaini [ctb, cph], Antônio Pedro Camargo [ctb, cph], Cédric Scherer [ctb, cph]", + "Repository": "RSPM" + }, + "vroom": { + "Package": "vroom", + "Version": "1.6.7", + "Source": "Repository", + "Title": "Read and Write Rectangular Text Data Quickly", + "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Shelby\", \"Bearrows\", role = \"ctb\"), person(\"https://github.com/mandreyel/\", role = \"cph\", comment = \"mio library\"), person(\"Jukka\", \"Jylänki\", role = \"cph\", comment = \"grisu3 implementation\"), person(\"Mikkel\", \"Jørgensen\", role = \"cph\", comment = \"grisu3 implementation\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "The goal of 'vroom' is to read and write data (like 'csv', 'tsv' and 'fwf') quickly. When reading it uses a quick initial indexing step, then reads the values lazily , so only the data you actually use needs to be read. The writer formats the data in parallel and writes to disk asynchronously from formatting.", + "License": "MIT + file LICENSE", + "URL": "https://vroom.r-lib.org, https://github.com/tidyverse/vroom", + "BugReports": "https://github.com/tidyverse/vroom/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "bit64", + "cli (>= 3.2.0)", + "crayon", + "glue", + "hms", + "lifecycle (>= 1.0.3)", + "methods", + "rlang (>= 0.4.2)", + "stats", + "tibble (>= 2.0.0)", + "tidyselect", + "tzdb (>= 0.1.1)", + "vctrs (>= 0.2.0)", + "withr" + ], + "Suggests": [ + "archive", + "bench (>= 1.1.0)", + "covr", + "curl", + "dplyr", + "forcats", + "fs", + "ggplot2", + "knitr", + "patchwork", + "prettyunits", + "purrr", + "rmarkdown", + "rstudioapi", + "scales", + "spelling", + "testthat (>= 2.1.0)", + "tidyr", + "utils", + "waldo", + "xml2" + ], + "LinkingTo": [ + "cpp11 (>= 0.2.0)", + "progress (>= 1.2.3)", + "tzdb (>= 0.1.1)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "nycflights13, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "false", + "Config/usethis/last-upkeep": "2025-11-25", + "Copyright": "file COPYRIGHTS", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Jim Hester [aut] (ORCID: ), Hadley Wickham [aut] (ORCID: ), Jennifer Bryan [aut, cre] (ORCID: ), Shelby Bearrows [ctb], https://github.com/mandreyel/ [cph] (mio library), Jukka Jylänki [cph] (grisu3 implementation), Mikkel Jørgensen [cph] (grisu3 implementation), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Jennifer Bryan ", + "Repository": "RSPM" + }, + "warp": { + "Package": "warp", + "Version": "0.2.3", + "Source": "Repository", + "Title": "Group Dates", + "Authors@R": "c( person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Tooling to group dates by a variety of periods including: yearly, monthly, by second, by week of the month, and more. The groups are defined in such a way that they also represent the distance between dates in terms of the period. This extracts valuable information that can be used in further calculations that rely on a specific temporal spacing between observations.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/DavisVaughan/warp, https://davisvaughan.github.io/warp/", + "BugReports": "https://github.com/DavisVaughan/warp/issues", + "Depends": [ + "R (>= 4.0.0)" + ], + "Suggests": [ + "covr", + "knitr", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-11-13", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Davis Vaughan [aut, cre], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Davis Vaughan ", + "Repository": "RSPM" + }, + "waywiser": { + "Package": "waywiser", + "Version": "0.6.3", + "Source": "Repository", + "Type": "Package", + "Title": "Ergonomic Methods for Assessing Spatial Models", + "Authors@R": "c( person(\"Michael\", \"Mahoney\", , \"mike.mahoney.218@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-2402-304X\")), person(\"Lucas\", \"Johnson\", , \"lucas.k.johnson03@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-7953-0260\")), person(\"Virgilio\", \"Gómez-Rubio\", role = \"rev\", comment = \"Virgilio reviewed the package (v. 0.2.0.9000) for rOpenSci, see \"), person(\"Jakub\", \"Nowosad\", role = \"rev\", comment = \"Jakub reviewed the package (v. 0.2.0.9000) for rOpenSci, see \"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Assessing predictive models of spatial data can be challenging, both because these models are typically built for extrapolating outside the original region represented by training data and due to potential spatially structured errors, with \"hot spots\" of higher than expected error clustered geographically due to spatial structure in the underlying data. Methods are provided for assessing models fit to spatial data, including approaches for measuring the spatial structure of model errors, assessing model predictions at multiple spatial scales, and evaluating where predictions can be made safely. Methods are particularly useful for models fit using the 'tidymodels' framework. Methods include Moran's I ('Moran' (1950) ), Geary's C ('Geary' (1954) ), Getis-Ord's G ('Ord' and 'Getis' (1995) ), agreement coefficients from 'Ji' and Gallo (2006) (), agreement metrics from 'Willmott' (1981) () and 'Willmott' 'et' 'al'. (2012) (), an implementation of the area of applicability methodology from 'Meyer' and 'Pebesma' (2021) (), and an implementation of multi-scale assessment as described in 'Riemann' 'et' 'al'. (2010) ().", + "License": "MIT + file LICENSE", + "URL": "https://github.com/ropensci/waywiser, https://docs.ropensci.org/waywiser/", + "BugReports": "https://github.com/ropensci/waywiser/issues", + "Depends": [ + "R (>= 4.0)" + ], + "Imports": [ + "dplyr (>= 1.1.0)", + "fields", + "FNN", + "glue", + "hardhat", + "Matrix", + "purrr", + "rlang (>= 1.1.0)", + "sf (>= 1.0-0)", + "spdep (>= 1.1-9)", + "stats", + "tibble", + "tidyselect", + "vctrs", + "yardstick (>= 1.2.0)" + ], + "Suggests": [ + "applicable", + "caret", + "CAST", + "covr", + "exactextractr", + "ggplot2", + "knitr", + "modeldata", + "recipes", + "rmarkdown", + "rsample", + "spatialsample", + "terra", + "testthat (>= 3.0.0)", + "tidymodels", + "tidyr", + "tigris", + "units", + "vip", + "whisker", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "kableExtra", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Encoding": "UTF-8", + "Language": "en-US", + "LazyData": "true", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Michael Mahoney [aut, cre] (), Lucas Johnson [ctb] (), Virgilio Gómez-Rubio [rev] (Virgilio reviewed the package (v. 0.2.0.9000) for rOpenSci, see ), Jakub Nowosad [rev] (Jakub reviewed the package (v. 0.2.0.9000) for rOpenSci, see ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Michael Mahoney ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "withr": { + "Package": "withr", + "Version": "3.0.2", + "Source": "Repository", + "Title": "Run Code 'With' Temporarily Modified Global State", + "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = c(\"aut\", \"cre\")), person(\"Kirill\", \"Müller\", , \"krlmlr+r@mailbox.org\", role = \"aut\"), person(\"Kevin\", \"Ushey\", , \"kevinushey@gmail.com\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Jennifer\", \"Bryan\", role = \"ctb\"), person(\"Richard\", \"Cotton\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A set of functions to run code 'with' safely and temporarily modified global state. Many of these functions were originally a part of the 'devtools' package, this provides a simple package with limited dependencies to provide access to these functions.", + "License": "MIT + file LICENSE", + "URL": "https://withr.r-lib.org, https://github.com/r-lib/withr#readme", + "BugReports": "https://github.com/r-lib/withr/issues", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "graphics", + "grDevices" + ], + "Suggests": [ + "callr", + "DBI", + "knitr", + "methods", + "rlang", + "rmarkdown (>= 2.12)", + "RSQLite", + "testthat (>= 3.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "Collate": "'aaa.R' 'collate.R' 'connection.R' 'db.R' 'defer-exit.R' 'standalone-defer.R' 'defer.R' 'devices.R' 'local_.R' 'with_.R' 'dir.R' 'env.R' 'file.R' 'language.R' 'libpaths.R' 'locale.R' 'makevars.R' 'namespace.R' 'options.R' 'par.R' 'path.R' 'rng.R' 'seed.R' 'wrap.R' 'sink.R' 'tempfile.R' 'timezone.R' 'torture.R' 'utils.R' 'with.R'", + "NeedsCompilation": "no", + "Author": "Jim Hester [aut], Lionel Henry [aut, cre], Kirill Müller [aut], Kevin Ushey [aut], Hadley Wickham [aut], Winston Chang [aut], Jennifer Bryan [ctb], Richard Cotton [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "wk": { + "Package": "wk", + "Version": "0.9.5", + "Source": "Repository", + "Title": "Lightweight Well-Known Geometry Parsing", + "Authors@R": "c( person(given = \"Dewey\", family = \"Dunnington\", role = c(\"aut\", \"cre\"), email = \"dewey@fishandwhistle.net\", comment = c(ORCID = \"0000-0002-9415-4582\")), person(given = \"Edzer\", family = \"Pebesma\", role = c(\"aut\"), email = \"edzer.pebesma@uni-muenster.de\", comment = c(ORCID = \"0000-0001-8049-7069\")), person(given = \"Anthony\", family = \"North\", email = \"anthony.jl.north@gmail.com\", role = c(\"ctb\")) )", + "Maintainer": "Dewey Dunnington ", + "Description": "Provides a minimal R and C++ API for parsing well-known binary and well-known text representation of geometries to and from R-native formats. Well-known binary is compact and fast to parse; well-known text is human-readable and is useful for writing tests. These formats are useful in R only if the information they contain can be accessed in R, for which high-performance functions are provided here.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "Suggests": [ + "testthat (>= 3.0.0)", + "vctrs (>= 0.3.0)", + "sf", + "tibble", + "readr" + ], + "URL": "https://paleolimbot.github.io/wk/, https://github.com/paleolimbot/wk", + "BugReports": "https://github.com/paleolimbot/wk/issues", + "Config/testthat/edition": "3", + "Depends": [ + "R (>= 2.10)" + ], + "LazyData": "true", + "NeedsCompilation": "yes", + "Author": "Dewey Dunnington [aut, cre] (ORCID: ), Edzer Pebesma [aut] (ORCID: ), Anthony North [ctb]", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "workflows": { + "Package": "workflows", + "Version": "1.3.0", + "Source": "Repository", + "Title": "Modeling Workflows", + "Authors@R": "c( person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = \"aut\"), person(\"Simon\", \"Couch\", , \"simon.couch@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0001-5676-5107\")), person(\"Hannah\", \"Frick\", , \"hannah@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6049-5258\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Managing both a 'parsnip' model and a preprocessor, such as a model formula or recipe from 'recipes', can often be challenging. The goal of 'workflows' is to streamline this process by bundling the model alongside the preprocessor, all within the same object.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/tidymodels/workflows, https://workflows.tidymodels.org", + "BugReports": "https://github.com/tidymodels/workflows/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.3.0)", + "generics (>= 0.1.2)", + "glue (>= 1.6.2)", + "hardhat (>= 1.4.2)", + "lifecycle (>= 1.0.3)", + "modelenv (>= 0.1.0)", + "parsnip (>= 1.2.1.9000)", + "recipes (>= 1.0.10.9000)", + "rlang (>= 1.1.0)", + "sparsevctrs (>= 0.1.0.9003)", + "tidyselect (>= 1.2.0)", + "vctrs (>= 0.4.1)", + "withr" + ], + "Suggests": [ + "butcher (>= 0.2.0)", + "covr", + "dials (>= 1.0.0)", + "glmnet", + "knitr", + "magrittr", + "Matrix", + "methods", + "modeldata (>= 1.0.0)", + "probably", + "rmarkdown", + "tailor (>= 0.1.0)", + "testthat (>= 3.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "dplyr, ggplot2, tidyr, tidyverse/tidytemplate, yardstick", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-25", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Davis Vaughan [aut], Simon Couch [aut] (ORCID: ), Hannah Frick [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hannah Frick ", + "Repository": "RSPM" + }, + "workflowsets": { + "Package": "workflowsets", + "Version": "1.1.1", + "Source": "Repository", + "Title": "Create a Collection of 'tidymodels' Workflows", + "Authors@R": "c( person(\"Hannah\", \"Frick\", , \"hannah@posit.co\", role =c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6049-5258\")), person(\"Max\", \"Kuhn\", , \"max@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-2402-136X\")), person(\"Simon\", \"Couch\", , \"simon.couch@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0001-5676-5107\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "A workflow is a combination of a model and preprocessors (e.g, a formula, recipe, etc.) (Kuhn and Silge (2021) ). In order to try different combinations of these, an object can be created that contains many workflows. There are functions to create workflows en masse as well as training them and visualizing the results.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/tidymodels/workflowsets, https://workflowsets.tidymodels.org", + "BugReports": "https://github.com/tidymodels/workflowsets/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli", + "dplyr (>= 1.0.0)", + "generics (>= 0.1.2)", + "ggplot2", + "hardhat (>= 1.2.0)", + "lifecycle (>= 1.0.0)", + "parsnip (>= 1.2.1)", + "pillar (>= 1.7.0)", + "prettyunits", + "purrr", + "rlang (>= 1.1.0)", + "rsample (>= 0.0.9)", + "stats", + "tibble (>= 3.1.0)", + "tidyr", + "tune (>= 1.2.0)", + "vctrs", + "withr", + "workflows (>= 1.1.4)" + ], + "Suggests": [ + "covr", + "dials (>= 0.1.0)", + "finetune", + "kknn", + "knitr", + "modeldata", + "recipes (>= 1.1.0)", + "rmarkdown", + "spelling", + "testthat (>= 3.0.0)", + "tidyclust", + "yardstick (>= 1.3.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "discrim, rpart, mda, klaR, earth, tidymodels, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-25", + "Encoding": "UTF-8", + "Language": "en-US", + "LazyData": "true", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hannah Frick [aut, cre] (ORCID: ), Max Kuhn [aut] (ORCID: ), Simon Couch [aut] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hannah Frick ", + "Repository": "RSPM" + }, + "xfun": { + "Package": "xfun", + "Version": "0.56", + "Source": "Repository", + "Type": "Package", + "Title": "Supporting Functions for Packages Maintained by 'Yihui Xie'", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\", \"cph\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")), person(\"Wush\", \"Wu\", role = \"ctb\"), person(\"Daijiang\", \"Li\", role = \"ctb\"), person(\"Xianying\", \"Tan\", role = \"ctb\"), person(\"Salim\", \"Brüggemann\", role = \"ctb\", email = \"salim-b@pm.me\", comment = c(ORCID = \"0000-0002-5329-5987\")), person(\"Christophe\", \"Dervieux\", role = \"ctb\"), person() )", + "Description": "Miscellaneous functions commonly used in other packages maintained by 'Yihui Xie'.", + "Depends": [ + "R (>= 3.2.0)" + ], + "Imports": [ + "grDevices", + "stats", + "tools" + ], + "Suggests": [ + "testit", + "parallel", + "codetools", + "methods", + "rstudioapi", + "tinytex (>= 0.30)", + "mime", + "litedown (>= 0.6)", + "commonmark", + "knitr (>= 1.50)", + "remotes", + "pak", + "curl", + "xml2", + "jsonlite", + "magick", + "yaml", + "data.table", + "qs2" + ], + "License": "MIT + file LICENSE", + "URL": "https://github.com/yihui/xfun", + "BugReports": "https://github.com/yihui/xfun/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "VignetteBuilder": "litedown", + "NeedsCompilation": "yes", + "Author": "Yihui Xie [aut, cre, cph] (ORCID: , URL: https://yihui.org), Wush Wu [ctb], Daijiang Li [ctb], Xianying Tan [ctb], Salim Brüggemann [ctb] (ORCID: ), Christophe Dervieux [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "P3M" + }, + "xgboost": { + "Package": "xgboost", + "Version": "3.1.3.1", + "Source": "Repository", + "Type": "Package", + "Title": "Extreme Gradient Boosting", + "Date": "2026-01-05", + "Authors@R": "c( person(\"Tianqi\", \"Chen\", role = c(\"aut\"), email = \"tianqi.tchen@gmail.com\"), person(\"Tong\", \"He\", role = c(\"aut\"), email = \"hetong007@gmail.com\"), person(\"Michael\", \"Benesty\", role = c(\"aut\"), email = \"michael@benesty.fr\"), person(\"Vadim\", \"Khotilovich\", role = c(\"aut\"), email = \"khotilovich@gmail.com\"), person(\"Yuan\", \"Tang\", role = c(\"aut\"), email = \"terrytangyuan@gmail.com\", comment = c(ORCID = \"0000-0001-5243-233X\")), person(\"Hyunsu\", \"Cho\", role = c(\"aut\"), email = \"chohyu01@cs.washington.edu\"), person(\"Kailong\", \"Chen\", role = c(\"aut\")), person(\"Rory\", \"Mitchell\", role = c(\"aut\")), person(\"Ignacio\", \"Cano\", role = c(\"aut\")), person(\"Tianyi\", \"Zhou\", role = c(\"aut\")), person(\"Mu\", \"Li\", role = c(\"aut\")), person(\"Junyuan\", \"Xie\", role = c(\"aut\")), person(\"Min\", \"Lin\", role = c(\"aut\")), person(\"Yifeng\", \"Geng\", role = c(\"aut\")), person(\"Yutian\", \"Li\", role = c(\"aut\")), person(\"Jiaming\", \"Yuan\", role = c(\"aut\", \"cre\"), email = \"jm.yuan@outlook.com\"), person(\"David\", \"Cortes\", role = c(\"aut\")), person(\"XGBoost contributors\", role = c(\"cph\"), comment = \"base XGBoost implementation\") )", + "Maintainer": "Jiaming Yuan ", + "Description": "Extreme Gradient Boosting, which is an efficient implementation of the gradient boosting framework from Chen & Guestrin (2016) . This package is its R interface. The package includes efficient linear model solver and tree learning algorithms. The package can automatically do parallel computation on a single machine which could be more than 10 times faster than existing gradient boosting packages. It supports various objective functions, including regression, classification and ranking. The package is made to be extensible, so that users are also allowed to define their own objectives easily.", + "License": "Apache License (== 2.0) | file LICENSE", + "URL": "https://github.com/dmlc/xgboost", + "BugReports": "https://github.com/dmlc/xgboost/issues", + "NeedsCompilation": "yes", + "VignetteBuilder": "knitr", + "Suggests": [ + "knitr", + "rmarkdown", + "ggplot2 (>= 1.0.1)", + "DiagrammeR (>= 0.9.0)", + "DiagrammeRsvg", + "rsvg", + "htmlwidgets", + "Ckmeans.1d.dp (>= 3.3.1)", + "vcd (>= 1.3)", + "testthat", + "igraph (>= 1.0.1)", + "float", + "titanic", + "RhpcBLASctl", + "survival" + ], + "Depends": [ + "R (>= 4.3.0)" + ], + "Imports": [ + "Matrix (>= 1.1-0)", + "methods", + "data.table (>= 1.9.6)", + "jsonlite (>= 1.0)" + ], + "RoxygenNote": "7.3.3", + "Encoding": "UTF-8", + "SystemRequirements": "GNU make, C++17", + "Author": "Tianqi Chen [aut], Tong He [aut], Michael Benesty [aut], Vadim Khotilovich [aut], Yuan Tang [aut] (ORCID: ), Hyunsu Cho [aut], Kailong Chen [aut], Rory Mitchell [aut], Ignacio Cano [aut], Tianyi Zhou [aut], Mu Li [aut], Junyuan Xie [aut], Min Lin [aut], Yifeng Geng [aut], Yutian Li [aut], Jiaming Yuan [aut, cre], David Cortes [aut], XGBoost contributors [cph] (base XGBoost implementation)", + "Repository": "P3M" + }, + "xml2": { + "Package": "xml2", + "Version": "1.5.2", + "Source": "Repository", + "Title": "Parse XML", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Jeroen\", \"Ooms\", email = \"jeroenooms@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"R Foundation\", role = \"ctb\", comment = \"Copy of R-project homepage cached as example\") )", + "Description": "Bindings to 'libxml2' for working with XML data using a simple, consistent interface based on 'XPath' expressions. Also supports XML schema validation; for 'XSLT' transformations see the 'xslt' package.", + "License": "MIT + file LICENSE", + "URL": "https://xml2.r-lib.org, https://r-lib.r-universe.dev/xml2", + "BugReports": "https://github.com/r-lib/xml2/issues", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "cli", + "methods", + "rlang (>= 1.1.0)" + ], + "Suggests": [ + "covr", + "curl", + "httr", + "knitr", + "mockery", + "rmarkdown", + "testthat (>= 3.2.0)", + "xslt" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "SystemRequirements": "libxml2: libxml2-dev (deb), libxml2-devel (rpm)", + "Collate": "'S4.R' 'as_list.R' 'xml_parse.R' 'as_xml_document.R' 'classes.R' 'format.R' 'import-standalone-obj-type.R' 'import-standalone-purrr.R' 'import-standalone-types-check.R' 'init.R' 'nodeset_apply.R' 'paths.R' 'utils.R' 'xml2-package.R' 'xml_attr.R' 'xml_children.R' 'xml_document.R' 'xml_find.R' 'xml_missing.R' 'xml_modify.R' 'xml_name.R' 'xml_namespaces.R' 'xml_node.R' 'xml_nodeset.R' 'xml_path.R' 'xml_schema.R' 'xml_serialize.R' 'xml_structure.R' 'xml_text.R' 'xml_type.R' 'xml_url.R' 'xml_write.R' 'zzz.R'", + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut], Jim Hester [aut], Jeroen Ooms [aut, cre], Posit Software, PBC [cph, fnd], R Foundation [ctb] (Copy of R-project homepage cached as example)", + "Maintainer": "Jeroen Ooms ", + "Repository": "P3M" + }, + "yaml": { + "Package": "yaml", + "Version": "2.3.12", + "Source": "Repository", + "Type": "Package", + "Title": "Methods to Convert R Data to YAML and Back", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"cre\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Shawn\", \"Garbett\", , \"shawn.garbett@vumc.org\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4079-5621\")), person(\"Jeremy\", \"Stephens\", role = c(\"aut\", \"ctb\")), person(\"Kirill\", \"Simonov\", role = \"aut\"), person(\"Yihui\", \"Xie\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Zhuoer\", \"Dong\", role = \"ctb\"), person(\"Jeffrey\", \"Horner\", role = \"ctb\"), person(\"reikoch\", role = \"ctb\"), person(\"Will\", \"Beasley\", role = \"ctb\", comment = c(ORCID = \"0000-0002-5613-5006\")), person(\"Brendan\", \"O'Connor\", role = \"ctb\"), person(\"Michael\", \"Quinn\", role = \"ctb\"), person(\"Charlie\", \"Gao\", role = \"ctb\"), person(c(\"Gregory\", \"R.\"), \"Warnes\", role = \"ctb\"), person(c(\"Zhian\", \"N.\"), \"Kamvar\", role = \"ctb\") )", + "Description": "Implements the 'libyaml' 'YAML' 1.1 parser and emitter () for R.", + "License": "BSD_3_clause + file LICENSE", + "URL": "https://yaml.r-lib.org, https://github.com/r-lib/yaml/", + "BugReports": "https://github.com/r-lib/yaml/issues", + "Suggests": [ + "knitr", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "Config/testthat/edition": "3", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "VignetteBuilder": "knitr", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [cre] (ORCID: ), Shawn Garbett [ctb] (ORCID: ), Jeremy Stephens [aut, ctb], Kirill Simonov [aut], Yihui Xie [ctb] (ORCID: ), Zhuoer Dong [ctb], Jeffrey Horner [ctb], reikoch [ctb], Will Beasley [ctb] (ORCID: ), Brendan O'Connor [ctb], Michael Quinn [ctb], Charlie Gao [ctb], Gregory R. Warnes [ctb], Zhian N. Kamvar [ctb]", + "Maintainer": "Hadley Wickham ", + "Repository": "https://p3m.dev/cran/__linux__/noble/latest" + }, + "yardstick": { + "Package": "yardstick", + "Version": "1.3.2", + "Source": "Repository", + "Type": "Package", + "Title": "Tidy Characterizations of Model Performance", + "Authors@R": "c( person(\"Max\", \"Kuhn\", , \"max@posit.co\", role = \"aut\"), person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = \"aut\"), person(\"Emil\", \"Hvitfeldt\", , \"emil.hvitfeldt@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-0679-1945\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Tidy tools for quantifying how well model fits to a data set such as confusion matrices, class probability curve summaries, and regression metrics (e.g., RMSE).", + "License": "MIT + file LICENSE", + "URL": "https://github.com/tidymodels/yardstick, https://yardstick.tidymodels.org", + "BugReports": "https://github.com/tidymodels/yardstick/issues", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "cli", + "dplyr (>= 1.1.0)", + "generics (>= 0.1.2)", + "hardhat (>= 1.3.0)", + "lifecycle (>= 1.0.3)", + "rlang (>= 1.1.4)", + "tibble", + "tidyselect (>= 1.2.0)", + "utils", + "vctrs (>= 0.5.0)", + "withr" + ], + "Suggests": [ + "covr", + "crayon", + "ggplot2", + "knitr", + "probably (>= 1.0.0)", + "rmarkdown", + "survival (>= 3.5-0)", + "testthat (>= 3.0.0)", + "tidyr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2024-10-24", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.2", + "Collate": "'aaa-metrics.R' 'import-standalone-types-check.R' 'aaa-new.R' 'aaa.R' 'check-metric.R' 'class-accuracy.R' 'class-bal_accuracy.R' 'class-detection_prevalence.R' 'class-f_meas.R' 'class-j_index.R' 'class-kap.R' 'class-mcc.R' 'class-npv.R' 'class-ppv.R' 'class-precision.R' 'class-recall.R' 'class-sens.R' 'class-spec.R' 'conf_mat.R' 'data.R' 'deprecated-prob_helpers.R' 'deprecated-template.R' 'estimator-helpers.R' 'event-level.R' 'fair-aaa.R' 'fair-demographic_parity.R' 'fair-equal_opportunity.R' 'fair-equalized_odds.R' 'import-standalone-obj-type.R' 'import-standalone-survival.R' 'metric-tweak.R' 'misc.R' 'missings.R' 'num-ccc.R' 'num-huber_loss.R' 'num-iic.R' 'num-mae.R' 'num-mape.R' 'num-mase.R' 'num-mpe.R' 'num-msd.R' 'num-poisson_log_loss.R' 'num-pseudo_huber_loss.R' 'num-rmse.R' 'num-rpd.R' 'num-rpiq.R' 'num-rsq.R' 'num-rsq_trad.R' 'num-smape.R' 'prob-average_precision.R' 'prob-binary-thresholds.R' 'prob-brier_class.R' 'prob-classification_cost.R' 'prob-gain_capture.R' 'prob-gain_curve.R' 'prob-helpers.R' 'prob-lift_curve.R' 'prob-mn_log_loss.R' 'prob-pr_auc.R' 'prob-pr_curve.R' 'prob-roc_auc.R' 'prob-roc_aunp.R' 'prob-roc_aunu.R' 'prob-roc_curve.R' 'reexports.R' 'surv-brier_survival.R' 'surv-brier_survival_integrated.R' 'surv-concordance_survival.R' 'surv-roc_auc_survival.R' 'surv-roc_curve_survival.R' 'template.R' 'validation.R' 'yardstick-package.R'", + "NeedsCompilation": "yes", + "Author": "Max Kuhn [aut], Davis Vaughan [aut], Emil Hvitfeldt [aut, cre] (), Posit Software, PBC [cph, fnd]", + "Maintainer": "Emil Hvitfeldt ", + "Repository": "RSPM" + } + } +} diff --git a/renv/.gitignore b/renv/.gitignore new file mode 100644 index 0000000..0ec0cbb --- /dev/null +++ b/renv/.gitignore @@ -0,0 +1,7 @@ +library/ +local/ +cellar/ +lock/ +python/ +sandbox/ +staging/ diff --git a/renv/activate.R b/renv/activate.R new file mode 100644 index 0000000..2753ae5 --- /dev/null +++ b/renv/activate.R @@ -0,0 +1,1334 @@ + +local({ + + # the requested version of renv + version <- "1.1.5" + attr(version, "sha") <- NULL + + # the project directory + project <- Sys.getenv("RENV_PROJECT") + if (!nzchar(project)) + project <- getwd() + + # use start-up diagnostics if enabled + diagnostics <- Sys.getenv("RENV_STARTUP_DIAGNOSTICS", unset = "FALSE") + if (diagnostics) { + start <- Sys.time() + profile <- tempfile("renv-startup-", fileext = ".Rprof") + utils::Rprof(profile) + on.exit({ + utils::Rprof(NULL) + elapsed <- signif(difftime(Sys.time(), start, units = "auto"), digits = 2L) + writeLines(sprintf("- renv took %s to run the autoloader.", format(elapsed))) + writeLines(sprintf("- Profile: %s", profile)) + print(utils::summaryRprof(profile)) + }, add = TRUE) + } + + # figure out whether the autoloader is enabled + enabled <- local({ + + # first, check config option + override <- getOption("renv.config.autoloader.enabled") + 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 + # prefer using the configuration one in the future + envvars <- c( + "RENV_CONFIG_AUTOLOADER_ENABLED", + "RENV_AUTOLOADER_ENABLED", + "RENV_ACTIVATE_PROJECT" + ) + + for (envvar in envvars) { + envval <- Sys.getenv(envvar, unset = NA) + if (!is.na(envval)) + return(tolower(envval) %in% c("true", "t", "1")) + } + + # enable by default + TRUE + + }) + + # 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") + return(invisible(TRUE)) + } + + # signal that we're loading renv during R startup + options(renv.autoloader.running = TRUE) + on.exit(options(renv.autoloader.running = NULL), add = TRUE) + + # signal that we've consented to use renv + options(renv.consent = TRUE) + + # load the 'utils' package eagerly -- this ensures that renv shims, which + # mask 'utils' packages, will come first on the search path + library(utils, lib.loc = .Library) + + # unload renv if it's already been loaded + if ("renv" %in% loadedNamespaces()) + 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;;x-r-help:\\1\a?\\1\033]8;;\a`" + text <- gsub(pattern, replacement, text, perl = TRUE) + + # runnable code + pattern <- "`(renv::(?:[^`])+)`" + replacement <- "`\033]8;;x-r-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 + } + + catf <- function(fmt, ..., appendLF = TRUE) { + + quiet <- getOption("renv.bootstrap.quiet", default = FALSE) + if (quiet) + return(invisible()) + + msg <- sprintf(fmt, ...) + cat(msg, file = stdout(), sep = if (appendLF) "\n" else "") + + invisible(msg) + + } + + header <- function(label, + ..., + prefix = "#", + suffix = "-", + n = min(getOption("width"), 78)) + { + label <- sprintf(label, ...) + n <- max(n - nchar(label) - nchar(prefix) - 2L, 8L) + if (n <= 0) + return(paste(prefix, label)) + + tail <- paste(rep.int(suffix, n), collapse = "") + paste0(prefix, " ", label, " ", tail) + + } + + 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) + + } + + bootstrap <- function(version, library) { + + friendly <- renv_bootstrap_version_friendly(version) + section <- header(sprintf("Bootstrapping renv %s", friendly)) + catf(section) + + # attempt to download renv + catf("- Downloading renv ... ", appendLF = FALSE) + withCallingHandlers( + tarball <- renv_bootstrap_download(version), + error = function(err) { + catf("FAILED") + stop("failed to download:\n", conditionMessage(err)) + } + ) + catf("OK") + on.exit(unlink(tarball), add = TRUE) + + # now attempt to install + catf("- Installing renv ... ", appendLF = FALSE) + withCallingHandlers( + status <- renv_bootstrap_install(version, tarball, library), + error = function(err) { + catf("FAILED") + stop("failed to install:\n", conditionMessage(err)) + } + ) + catf("OK") + + # add empty line to break up bootstrapping from normal output + catf("") + + return(invisible()) + } + + renv_bootstrap_tests_running <- function() { + getOption("renv.tests.running", default = FALSE) + } + + renv_bootstrap_repos <- function() { + + # get CRAN repository + cran <- getOption("renv.repos.cran", "https://cloud.r-project.org") + + # check for repos override + repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) + if (!is.na(repos)) { + + # check for RSPM; if set, use a fallback repository for renv + rspm <- Sys.getenv("RSPM", unset = NA) + if (identical(rspm, repos)) + repos <- c(RSPM = rspm, CRAN = cran) + + return(repos) + + } + + # check for lockfile repositories + repos <- tryCatch(renv_bootstrap_repos_lockfile(), error = identity) + if (!inherits(repos, "error") && length(repos)) + return(repos) + + # retrieve current repos + repos <- getOption("repos") + + # ensure @CRAN@ entries are resolved + repos[repos == "@CRAN@"] <- cran + + # add in renv.bootstrap.repos if set + default <- c(FALLBACK = "https://cloud.r-project.org") + extra <- getOption("renv.bootstrap.repos", default = default) + repos <- c(repos, extra) + + # remove duplicates that might've snuck in + dupes <- duplicated(repos) | duplicated(names(repos)) + repos[!dupes] + + } + + renv_bootstrap_repos_lockfile <- function() { + + lockpath <- Sys.getenv("RENV_PATHS_LOCKFILE", unset = "renv.lock") + if (!file.exists(lockpath)) + return(NULL) + + lockfile <- tryCatch(renv_json_read(lockpath), error = identity) + if (inherits(lockfile, "error")) { + warning(lockfile) + return(NULL) + } + + repos <- lockfile$R$Repositories + if (length(repos) == 0) + return(NULL) + + keys <- vapply(repos, `[[`, "Name", FUN.VALUE = character(1)) + vals <- vapply(repos, `[[`, "URL", FUN.VALUE = character(1)) + names(vals) <- keys + + return(vals) + + } + + renv_bootstrap_download <- function(version) { + + sha <- attr(version, "sha", exact = TRUE) + + methods <- if (!is.null(sha)) { + + # attempting to bootstrap a development version of renv + c( + function() renv_bootstrap_download_tarball(sha), + function() renv_bootstrap_download_github(sha) + ) + + } else { + + # attempting to bootstrap a release version of renv + c( + function() renv_bootstrap_download_tarball(version), + function() renv_bootstrap_download_cran_latest(version), + function() renv_bootstrap_download_cran_archive(version) + ) + + } + + for (method in methods) { + path <- tryCatch(method(), error = identity) + if (is.character(path) && file.exists(path)) + return(path) + } + + stop("All download methods failed") + + } + + renv_bootstrap_download_impl <- function(url, destfile) { + + mode <- "wb" + + # https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17715 + fixup <- + Sys.info()[["sysname"]] == "Windows" && + substring(url, 1L, 5L) == "file:" + + if (fixup) + mode <- "w+b" + + args <- list( + url = url, + destfile = destfile, + mode = mode, + quiet = TRUE + ) + + if ("headers" %in% names(formals(utils::download.file))) { + headers <- renv_bootstrap_download_custom_headers(url) + if (length(headers) && is.character(headers)) + args$headers <- headers + } + + do.call(utils::download.file, args) + + } + + renv_bootstrap_download_custom_headers <- function(url) { + + headers <- getOption("renv.download.headers") + if (is.null(headers)) + return(character()) + + if (!is.function(headers)) + stopf("'renv.download.headers' is not a function") + + headers <- headers(url) + if (length(headers) == 0L) + return(character()) + + if (is.list(headers)) + headers <- unlist(headers, recursive = FALSE, use.names = TRUE) + + ok <- + is.character(headers) && + is.character(names(headers)) && + all(nzchar(names(headers))) + + if (!ok) + stop("invocation of 'renv.download.headers' did not return a named character vector") + + headers + + } + + renv_bootstrap_download_cran_latest <- function(version) { + + spec <- renv_bootstrap_download_cran_latest_find(version) + type <- spec$type + repos <- spec$repos + + baseurl <- utils::contrib.url(repos = repos, type = type) + ext <- if (identical(type, "source")) + ".tar.gz" + else if (Sys.info()[["sysname"]] == "Windows") + ".zip" + else + ".tgz" + name <- sprintf("renv_%s%s", version, ext) + url <- paste(baseurl, name, sep = "/") + + destfile <- file.path(tempdir(), name) + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (inherits(status, "condition")) + return(FALSE) + + # report success and return + destfile + + } + + renv_bootstrap_download_cran_latest_find <- function(version) { + + # check whether binaries are supported on this system + binary <- + getOption("renv.bootstrap.binary", default = TRUE) && + !identical(.Platform$pkgType, "source") && + !identical(getOption("pkgType"), "source") && + Sys.info()[["sysname"]] %in% c("Darwin", "Windows") + + types <- c(if (binary) "binary", "source") + + # iterate over types + repositories + 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(repos) + if (length(headers) && is.character(headers)) + args$headers <- headers + } + + # retrieve package database + db <- tryCatch( + as.data.frame( + do.call(utils::available.packages, args), + stringsAsFactors = FALSE + ), + error = identity + ) + + if (inherits(db, "error")) + next + + # check for compatible entry + entry <- db[db$Package %in% "renv" & db$Version %in% version, ] + if (nrow(entry) == 0) + next + + # found it; return spec to caller + spec <- list(entry = entry, type = type, repos = repos) + return(spec) + + } + } + + # if we got here, we failed to find renv + fmt <- "renv %s is not available from your declared package repositories" + stop(sprintf(fmt, version)) + + } + + renv_bootstrap_download_cran_archive <- function(version) { + + name <- sprintf("renv_%s.tar.gz", version) + repos <- renv_bootstrap_repos() + urls <- file.path(repos, "src/contrib/Archive/renv", name) + destfile <- file.path(tempdir(), name) + + for (url in urls) { + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (identical(status, 0L)) + return(destfile) + + } + + return(FALSE) + + } + + renv_bootstrap_download_tarball <- function(version) { + + # if the user has provided the path to a tarball via + # an environment variable, then use it + tarball <- Sys.getenv("RENV_BOOTSTRAP_TARBALL", unset = NA) + if (is.na(tarball)) + return() + + # allow directories + if (dir.exists(tarball)) { + name <- sprintf("renv_%s.tar.gz", version) + tarball <- file.path(tarball, name) + } + + # bail if it doesn't exist + if (!file.exists(tarball)) { + + # let the user know we weren't able to honour their request + fmt <- "- RENV_BOOTSTRAP_TARBALL is set (%s) but does not exist." + msg <- sprintf(fmt, tarball) + warning(msg) + + # bail + return() + + } + + catf("- Using local tarball '%s'.", tarball) + tarball + + } + + 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") + if (!identical(enabled, "TRUE")) + return(FALSE) + + # prepare download options + token <- renv_bootstrap_github_token() + if (is.null(token)) + token <- "" + + if (nzchar(Sys.which("curl")) && nzchar(token)) { + fmt <- "--location --fail --header \"Authorization: token %s\"" + 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(token)) { + fmt <- "--header=\"Authorization: token %s\"" + 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) + } + + url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version) + name <- sprintf("renv_%s.tar.gz", version) + destfile <- file.path(tempdir(), name) + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (!identical(status, 0L)) + return(FALSE) + + renv_bootstrap_download_augment(destfile) + + return(destfile) + + } + + # Add Sha to DESCRIPTION. This is stop gap until #890, after which we + # can use renv::install() to fully capture metadata. + renv_bootstrap_download_augment <- function(destfile) { + sha <- renv_bootstrap_git_extract_sha1_tar(destfile) + if (is.null(sha)) { + return() + } + + # Untar + tempdir <- tempfile("renv-github-") + on.exit(unlink(tempdir, recursive = TRUE), add = TRUE) + untar(destfile, exdir = tempdir) + pkgdir <- dir(tempdir, full.names = TRUE)[[1]] + + # Modify description + desc_path <- file.path(pkgdir, "DESCRIPTION") + desc_lines <- readLines(desc_path) + remotes_fields <- c( + "RemoteType: github", + "RemoteHost: api.github.com", + "RemoteRepo: renv", + "RemoteUsername: rstudio", + "RemotePkgRef: rstudio/renv", + paste("RemoteRef: ", sha), + paste("RemoteSha: ", sha) + ) + writeLines(c(desc_lines[desc_lines != ""], remotes_fields), con = desc_path) + + # Re-tar + local({ + old <- setwd(tempdir) + on.exit(setwd(old), add = TRUE) + + tar(destfile, compression = "gzip") + }) + invisible() + } + + # Extract the commit hash from a git archive. Git archives include the SHA1 + # hash as the comment field of the tarball pax extended header + # (see https://www.kernel.org/pub/software/scm/git/docs/git-archive.html) + # For GitHub archives this should be the first header after the default one + # (512 byte) header. + renv_bootstrap_git_extract_sha1_tar <- function(bundle) { + + # open the bundle for reading + # We use gzcon for everything because (from ?gzcon) + # > Reading from a connection which does not supply a 'gzip' magic + # > header is equivalent to reading from the original connection + conn <- gzcon(file(bundle, open = "rb", raw = TRUE)) + on.exit(close(conn)) + + # The default pax header is 512 bytes long and the first pax extended header + # with the comment should be 51 bytes long + # `52 comment=` (11 chars) + 40 byte SHA1 hash + len <- 0x200 + 0x33 + res <- rawToChar(readBin(conn, "raw", n = len)[0x201:len]) + + if (grepl("^52 comment=", res)) { + sub("52 comment=", "", res) + } else { + NULL + } + } + + renv_bootstrap_install <- function(version, tarball, library) { + + # attempt to install it into project library + dir.create(library, showWarnings = FALSE, recursive = TRUE) + output <- renv_bootstrap_install_impl(library, tarball) + + # check for successful install + status <- attr(output, "status") + if (is.null(status) || identical(status, 0L)) + return(status) + + # an error occurred; report it + header <- "installation of renv failed" + lines <- paste(rep.int("=", nchar(header)), collapse = "") + text <- paste(c(header, lines, output), collapse = "\n") + stop(text) + + } + + renv_bootstrap_install_impl <- function(library, tarball) { + + # invoke using system2 so we can capture and report output + bin <- R.home("bin") + exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R" + R <- file.path(bin, exe) + + args <- c( + "--vanilla", "CMD", "INSTALL", "--no-multiarch", + "-l", shQuote(path.expand(library)), + shQuote(path.expand(tarball)) + ) + + system2(R, args, stdout = TRUE, stderr = TRUE) + + } + + renv_bootstrap_platform_prefix_default <- function() { + + # read version component + version <- Sys.getenv("RENV_PATHS_VERSION", unset = "R-%v") + + # expand placeholders + placeholders <- list( + list("%v", format(getRversion()[1, 1:2])), + list("%V", format(getRversion()[1, 1:3])) + ) + + for (placeholder in placeholders) + version <- gsub(placeholder[[1L]], placeholder[[2L]], version, fixed = TRUE) + + # include SVN revision for development versions of R + # (to avoid sharing platform-specific artefacts with released versions of R) + devel <- + identical(R.version[["status"]], "Under development (unstable)") || + identical(R.version[["nickname"]], "Unsuffered Consequences") + + if (devel) + version <- paste(version, R.version[["svn rev"]], sep = "-r") + + version + + } + + renv_bootstrap_platform_prefix <- function() { + + # construct version prefix + version <- renv_bootstrap_platform_prefix_default() + + # build list of path components + components <- c(version, R.version$platform) + + # include prefix if provided by user + prefix <- renv_bootstrap_platform_prefix_impl() + if (!is.na(prefix) && nzchar(prefix)) + components <- c(prefix, components) + + # build prefix + paste(components, collapse = "/") + + } + + renv_bootstrap_platform_prefix_impl <- function() { + + # if an explicit prefix has been supplied, use it + prefix <- Sys.getenv("RENV_PATHS_PREFIX", unset = NA) + if (!is.na(prefix)) + return(prefix) + + # 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()) + + # empty string on failure + "" + + } + + renv_bootstrap_platform_prefix_auto <- function() { + + prefix <- tryCatch(renv_bootstrap_platform_os(), error = identity) + if (inherits(prefix, "error") || prefix %in% "unknown") { + + msg <- paste( + "failed to infer current operating system", + "please file a bug report at https://github.com/rstudio/renv/issues", + sep = "; " + ) + + warning(msg) + + } + + prefix + + } + + renv_bootstrap_platform_os <- function() { + + sysinfo <- Sys.info() + sysname <- sysinfo[["sysname"]] + + # handle Windows + macOS up front + if (sysname == "Windows") + return("windows") + else if (sysname == "Darwin") + return("macos") + + # check for os-release files + for (file in c("/etc/os-release", "/usr/lib/os-release")) + if (file.exists(file)) + return(renv_bootstrap_platform_os_via_os_release(file, sysinfo)) + + # check for redhat-release files + if (file.exists("/etc/redhat-release")) + return(renv_bootstrap_platform_os_via_redhat_release()) + + "unknown" + + } + + renv_bootstrap_platform_os_via_os_release <- function(file, sysinfo) { + + # read /etc/os-release + release <- utils::read.table( + file = file, + sep = "=", + quote = c("\"", "'"), + col.names = c("Key", "Value"), + comment.char = "#", + stringsAsFactors = FALSE + ) + + vars <- as.list(release$Value) + names(vars) <- release$Key + + # get os name + os <- tolower(sysinfo[["sysname"]]) + + # read id + id <- "unknown" + for (field in c("ID", "ID_LIKE")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + id <- vars[[field]] + break + } + } + + # read version + version <- "unknown" + for (field in c("UBUNTU_CODENAME", "VERSION_CODENAME", "VERSION_ID", "BUILD_ID")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + version <- vars[[field]] + break + } + } + + # join together + paste(c(os, id, version), collapse = "-") + + } + + renv_bootstrap_platform_os_via_redhat_release <- function() { + + # read /etc/redhat-release + contents <- readLines("/etc/redhat-release", warn = FALSE) + + # infer id + id <- if (grepl("centos", contents, ignore.case = TRUE)) + "centos" + else if (grepl("redhat", contents, ignore.case = TRUE)) + "redhat" + else + "unknown" + + # try to find a version component (very hacky) + version <- "unknown" + + parts <- strsplit(contents, "[[:space:]]")[[1L]] + for (part in parts) { + + nv <- tryCatch(numeric_version(part), error = identity) + if (inherits(nv, "error")) + next + + version <- nv[1, 1] + break + + } + + paste(c("linux", id, version), collapse = "-") + + } + + renv_bootstrap_library_root_name <- function(project) { + + # use project name as-is if requested + asis <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT_ASIS", unset = "FALSE") + if (asis) + return(basename(project)) + + # otherwise, disambiguate based on project's path + id <- substring(renv_bootstrap_hash_text(project), 1L, 8L) + paste(basename(project), id, sep = "-") + + } + + renv_bootstrap_library_root <- function(project) { + + prefix <- renv_bootstrap_profile_prefix() + + path <- Sys.getenv("RENV_PATHS_LIBRARY", unset = NA) + if (!is.na(path)) + return(paste(c(path, prefix), collapse = "/")) + + path <- renv_bootstrap_library_root_impl(project) + if (!is.null(path)) { + name <- renv_bootstrap_library_root_name(project) + return(paste(c(path, prefix, name), collapse = "/")) + } + + renv_bootstrap_paths_renv("library", project = project) + + } + + renv_bootstrap_library_root_impl <- function(project) { + + root <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) + if (!is.na(root)) + return(root) + + type <- renv_bootstrap_project_type(project) + if (identical(type, "package")) { + userdir <- renv_bootstrap_user_dir() + return(file.path(userdir, "library")) + } + + } + + renv_bootstrap_validate_version <- function(version, description = NULL) { + + # resolve description file + # + # avoid passing lib.loc to `packageDescription()` below, since R will + # use the loaded version of the package by default anyhow. note that + # this function should only be called after 'renv' is loaded + # https://github.com/rstudio/renv/issues/1625 + description <- description %||% packageDescription("renv") + + # check whether requested version 'version' matches loaded version of renv + sha <- attr(version, "sha", exact = TRUE) + valid <- if (!is.null(sha)) + renv_bootstrap_validate_version_dev(sha, description) + else + renv_bootstrap_validate_version_release(version, description) + + if (valid) + return(TRUE) + + # the loaded version of renv doesn't match the requested version; + # give the user instructions on how to proceed + dev <- identical(description[["RemoteType"]], "github") + remote <- if (dev) + paste("rstudio/renv", description[["RemoteSha"]], sep = "@") + else + paste("renv", description[["Version"]], sep = "@") + + # display both loaded version + sha if available + friendly <- renv_bootstrap_version_friendly( + version = description[["Version"]], + sha = if (dev) description[["RemoteSha"]] + ) + + 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 + + } + + renv_bootstrap_validate_version_dev <- function(version, description) { + + expected <- description[["RemoteSha"]] + if (!is.character(expected)) + return(FALSE) + + pattern <- sprintf("^\\Q%s\\E", version) + grepl(pattern, expected, perl = TRUE) + + } + + renv_bootstrap_validate_version_release <- function(version, description) { + expected <- description[["Version"]] + is.character(expected) && identical(expected, version) + } + + renv_bootstrap_hash_text <- function(text) { + + hashfile <- tempfile("renv-hash-") + on.exit(unlink(hashfile), add = TRUE) + + writeLines(text, con = hashfile) + tools::md5sum(hashfile) + + } + + renv_bootstrap_load <- function(project, libpath, version) { + + # try to load renv from the project library + if (!requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) + return(FALSE) + + # warn if the version of renv loaded does not match + renv_bootstrap_validate_version(version) + + # execute renv load hooks, if any + hooks <- getHook("renv::autoload") + for (hook in hooks) + if (is.function(hook)) + tryCatch(hook(), error = warnify) + + # load the project + renv::load(project) + + TRUE + + } + + renv_bootstrap_profile_load <- function(project) { + + # if RENV_PROFILE is already set, just use that + profile <- Sys.getenv("RENV_PROFILE", unset = NA) + if (!is.na(profile) && nzchar(profile)) + return(profile) + + # check for a profile file (nothing to do if it doesn't exist) + path <- renv_bootstrap_paths_renv("profile", profile = FALSE, project = project) + if (!file.exists(path)) + return(NULL) + + # read the profile, and set it if it exists + contents <- readLines(path, warn = FALSE) + if (length(contents) == 0L) + return(NULL) + + # set RENV_PROFILE + profile <- contents[[1L]] + if (!profile %in% c("", "default")) + Sys.setenv(RENV_PROFILE = profile) + + profile + + } + + renv_bootstrap_profile_prefix <- function() { + profile <- renv_bootstrap_profile_get() + if (!is.null(profile)) + return(file.path("profiles", profile, "renv")) + } + + renv_bootstrap_profile_get <- function() { + profile <- Sys.getenv("RENV_PROFILE", unset = "") + renv_bootstrap_profile_normalize(profile) + } + + renv_bootstrap_profile_set <- function(profile) { + profile <- renv_bootstrap_profile_normalize(profile) + if (is.null(profile)) + Sys.unsetenv("RENV_PROFILE") + else + Sys.setenv(RENV_PROFILE = profile) + } + + renv_bootstrap_profile_normalize <- function(profile) { + + if (is.null(profile) || profile %in% c("", "default")) + return(NULL) + + profile + + } + + renv_bootstrap_path_absolute <- function(path) { + + substr(path, 1L, 1L) %in% c("~", "/", "\\") || ( + substr(path, 1L, 1L) %in% c(letters, LETTERS) && + substr(path, 2L, 3L) %in% c(":/", ":\\") + ) + + } + + renv_bootstrap_paths_renv <- function(..., profile = TRUE, project = NULL) { + renv <- Sys.getenv("RENV_PATHS_RENV", unset = "renv") + root <- if (renv_bootstrap_path_absolute(renv)) NULL else project + prefix <- if (profile) renv_bootstrap_profile_prefix() + components <- c(root, renv, prefix, ...) + paste(components, collapse = "/") + } + + renv_bootstrap_project_type <- function(path) { + + descpath <- file.path(path, "DESCRIPTION") + if (!file.exists(descpath)) + return("unknown") + + desc <- tryCatch( + read.dcf(descpath, all = TRUE), + error = identity + ) + + if (inherits(desc, "error")) + return("unknown") + + type <- desc$Type + if (!is.null(type)) + return(tolower(type)) + + package <- desc$Package + if (!is.null(package)) + return("package") + + "unknown" + + } + + renv_bootstrap_user_dir <- function() { + dir <- renv_bootstrap_user_dir_impl() + path.expand(chartr("\\", "/", dir)) + } + + renv_bootstrap_user_dir_impl <- function() { + + # use local override if set + override <- getOption("renv.userdir.override") + if (!is.null(override)) + return(override) + + # use R_user_dir if available + tools <- asNamespace("tools") + if (is.function(tools$R_user_dir)) + return(tools$R_user_dir("renv", "cache")) + + # try using our own backfill for older versions of R + envvars <- c("R_USER_CACHE_DIR", "XDG_CACHE_HOME") + for (envvar in envvars) { + root <- Sys.getenv(envvar, unset = NA) + if (!is.na(root)) + return(file.path(root, "R/renv")) + } + + # use platform-specific default fallbacks + if (Sys.info()[["sysname"]] == "Windows") + file.path(Sys.getenv("LOCALAPPDATA"), "R/cache/R/renv") + else if (Sys.info()[["sysname"]] == "Darwin") + "~/Library/Caches/org.R-project.R/R/renv" + else + "~/.cache/R/renv" + + } + + renv_bootstrap_version_friendly <- function(version, shafmt = NULL, sha = NULL) { + sha <- sha %||% attr(version, "sha", exact = TRUE) + parts <- c(version, sprintf(shafmt %||% " [sha: %s]", substring(sha, 1L, 7L))) + paste(parts, collapse = "") + } + + renv_bootstrap_exec <- function(project, libpath, version) { + if (!renv_bootstrap_load(project, libpath, version)) + renv_bootstrap_run(project, libpath, version) + } + + renv_bootstrap_run <- function(project, libpath, version) { + + # perform bootstrap + bootstrap(version, libpath) + + # exit early if we're just testing bootstrap + if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) + return(TRUE) + + # try again to load + if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { + return(renv::load(project = project)) + } + + # failed to download or load renv; warn the user + msg <- c( + "Failed to find an renv installation: the project will not be loaded.", + "Use `renv::activate()` to re-initialize the project." + ) + + warning(paste(msg, collapse = "\n"), call. = FALSE) + + } + + renv_json_read <- function(file = NULL, text = NULL) { + + jlerr <- NULL + + # if jsonlite is loaded, use that instead + if ("jsonlite" %in% loadedNamespaces()) { + + json <- tryCatch(renv_json_read_jsonlite(file, text), error = identity) + if (!inherits(json, "error")) + return(json) + + jlerr <- json + + } + + # otherwise, fall back to the default JSON reader + json <- tryCatch(renv_json_read_default(file, text), error = identity) + if (!inherits(json, "error")) + return(json) + + # report an error + if (!is.null(jlerr)) + stop(jlerr) + else + stop(json) + + } + + renv_json_read_jsonlite <- function(file = NULL, text = NULL) { + text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") + jsonlite::fromJSON(txt = text, simplifyVector = FALSE) + } + + renv_json_read_patterns <- function() { + + list( + + # objects + list("{", "\t\n\tobject(\t\n\t", TRUE), + list("}", "\t\n\t)\t\n\t", TRUE), + + # arrays + list("[", "\t\n\tarray(\t\n\t", TRUE), + list("]", "\n\t\n)\n\t\n", TRUE), + + # maps + list(":", "\t\n\t=\t\n\t", TRUE), + + # newlines + list("\\u000a", "\n", FALSE) + + ) + + } + + renv_json_read_envir <- function() { + + envir <- new.env(parent = emptyenv()) + + envir[["+"]] <- `+` + envir[["-"]] <- `-` + + envir[["object"]] <- function(...) { + result <- list(...) + names(result) <- as.character(names(result)) + result + } + + envir[["array"]] <- list + + envir[["true"]] <- TRUE + envir[["false"]] <- FALSE + envir[["null"]] <- NULL + + envir + + } + + renv_json_read_remap <- function(object, patterns) { + + # repair names if necessary + if (!is.null(names(object))) { + + nms <- names(object) + for (pattern in patterns) + nms <- gsub(pattern[[2L]], pattern[[1L]], nms, fixed = TRUE) + names(object) <- nms + + } + + # repair strings if necessary + if (is.character(object)) { + for (pattern in patterns) + object <- gsub(pattern[[2L]], pattern[[1L]], object, fixed = TRUE) + } + + # recurse for other objects + if (is.recursive(object)) + for (i in seq_along(object)) + object[i] <- list(renv_json_read_remap(object[[i]], patterns)) + + # return remapped object + object + + } + + renv_json_read_default <- function(file = NULL, text = NULL) { + + # read json text + text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") + + # convert into something the R parser will understand + patterns <- renv_json_read_patterns() + transformed <- text + for (pattern in patterns) + transformed <- gsub(pattern[[1L]], pattern[[2L]], transformed, fixed = TRUE) + + # parse it + rfile <- tempfile("renv-json-", fileext = ".R") + on.exit(unlink(rfile), add = TRUE) + writeLines(transformed, con = rfile) + json <- parse(rfile, keep.source = FALSE, srcfile = NULL)[[1L]] + + # evaluate in safe environment + result <- eval(json, envir = renv_json_read_envir()) + + # fix up strings if necessary -- do so only with reversible patterns + patterns <- Filter(function(pattern) pattern[[3L]], patterns) + renv_json_read_remap(result, patterns) + + } + + + # load the renv profile, if any + renv_bootstrap_profile_load(project) + + # construct path to library root + root <- renv_bootstrap_library_root(project) + + # construct library prefix for platform + prefix <- renv_bootstrap_platform_prefix() + + # construct full libpath + libpath <- file.path(root, prefix) + + # run bootstrap code + renv_bootstrap_exec(project, libpath, version) + + invisible() + +}) diff --git a/renv/settings.json b/renv/settings.json new file mode 100644 index 0000000..ffdbb32 --- /dev/null +++ b/renv/settings.json @@ -0,0 +1,19 @@ +{ + "bioconductor.version": null, + "external.libraries": [], + "ignored.packages": [], + "package.dependency.fields": [ + "Imports", + "Depends", + "LinkingTo" + ], + "ppm.enabled": null, + "ppm.ignored.urls": [], + "r.version": null, + "snapshot.type": "implicit", + "use.cache": true, + "vcs.ignore.cellar": true, + "vcs.ignore.library": true, + "vcs.ignore.local": true, + "vcs.manage.ignores": true +} diff --git a/scripts/make_title_globe.R b/scripts/make_title_globe.R new file mode 100644 index 0000000..e3cf610 --- /dev/null +++ b/scripts/make_title_globe.R @@ -0,0 +1,49 @@ +# scripts/make_title_globe.R +library(ggplot2) +library(sf) +library(dplyr) +library(maps) + +# 1. Setup Data +states_sf <- sf::st_as_sf(maps::map("state", plot = FALSE, fill = TRUE)) + +# 2. Colors +wa_color <- "#D95F0E" +ga_color <- "#00A88F" +bg_fill <- "#f0f0f0" +borders <- "#ffffff" +ocean_col <- "#ffffff" + +# 3. Create the Plot +p <- ggplot() + + # Graticules + geom_sf(data = sf::st_graticule(lat = seq(-90, 90, 10), lon = seq(-180, 180, 10)), + color = "#e0e0e0", linewidth = 0.1) + + + # Background States + geom_sf(data = states_sf, + fill = bg_fill, color = borders, linewidth = 0.3) + + + # Highlights + geom_sf(data = states_sf %>% filter(ID == "washington"), + fill = wa_color, color = borders, linewidth = 0.3) + + geom_sf(data = states_sf %>% filter(ID == "georgia"), + fill = ga_color, color = borders, linewidth = 0.3) + + + # --- THE FIX --- + # -102 was Center. -72 was too far Left. + # -87 is the magic number (15 degrees East). + coord_sf(crs = "+proj=ortho +lat_0=40 +lon_0=-102") + + + # Theme + theme_void() + + theme( + panel.background = element_rect(fill = ocean_col, color = NA), + plot.background = element_rect(fill = ocean_col, color = NA) + ) + +# 4. Save +if(!dir.exists("assets")) dir.create("assets") +ggsave("assets/study_sites_globe.png", plot = p, width = 10, height = 10, dpi = 300) + +message("Success! Globe rotated 15 degrees.") \ No newline at end of file