diff --git a/.Rhistory b/.Rhistory
index 19c58ab..696d5a7 100644
--- a/.Rhistory
+++ b/.Rhistory
@@ -1,210 +1,416 @@
-})
-# Verify farm_health_data exists and has content
-if (!exists("farm_health_data") || nrow(farm_health_data) == 0) {
-safe_log("farm_health_data not found or empty, generating default data", "WARNING")
-# Create minimal fallback data
-tryCatch({
-# Get fields from boundaries
-fields <- unique(AllPivots0$field)
-# Create basic data frame with just field names
-farm_health_data <- data.frame(
-field = fields,
-mean_ci = rep(NA, length(fields)),
-ci_change = rep(NA, length(fields)),
-ci_uniformity = rep(NA, length(fields)),
-status = rep("Unknown", length(fields)),
-anomaly_type = rep("Unknown", length(fields)),
-priority_level = rep(5, length(fields)), # Low priority
-age_weeks = rep(NA, length(fields)),
-harvest_readiness = rep("Unknown", length(fields)),
-stringsAsFactors = FALSE
-)
-safe_log("Created fallback farm_health_data with basic field information")
-}, error = function(e) {
-safe_log(paste("Error creating fallback farm_health_data:", e$message), "ERROR")
-farm_health_data <<- data.frame(
-field = character(),
-mean_ci = numeric(),
-ci_change = numeric(),
-ci_uniformity = numeric(),
-status = character(),
-anomaly_type = character(),
-priority_level = numeric(),
-age_weeks = numeric(),
-harvest_readiness = character(),
-stringsAsFactors = FALSE
-)
-})
+ggplot2::labs(title = "Model Performance: \nPredicted vs Actual Tonnage/ha",
+x = "Actual tonnage/ha (Tcha)",
+y = "Predicted tonnage/ha (Tcha)") +
+ggplot2::theme_minimal()
}
-# Calculate farm health summary metrics
-tryCatch({
-# Generate farm health summary data
-farm_health_data <- generate_farm_health_summary(
-field_boundaries = AllPivots0,
-ci_current = CI,
-ci_previous = CI_m1,
-harvesting_data = harvesting_data
-)
-# Log the summary data
-safe_log(paste("Generated farm health summary with", nrow(farm_health_data), "fields"))
-}, error = function(e) {
-safe_log(paste("Error in farm health calculation:", e$message), "ERROR")
-# Create empty dataframe if calculation failed
-farm_health_data <- data.frame(
-field = character(),
-mean_ci = numeric(),
-ci_change = numeric(),
-ci_uniformity = numeric(),
-status = character(),
-anomaly_type = character(),
-priority_level = numeric(),
-age_weeks = numeric(),
-harvest_readiness = character(),
-stringsAsFactors = FALSE
-)
-})
-# Render the velocity and acceleration indicators
-tryCatch({
-# Create and display the indicators using the imported utility function
-velocity_plot <- create_velocity_acceleration_indicator(
-health_data = farm_health_data,
-ci_current = CI,
-ci_prev1 = CI_m1,
-ci_prev2 = CI_m2,
-ci_prev3 = CI_m3,
-field_boundaries = AllPivots0
-)
-# Print the visualization
-print(velocity_plot)
-# Create a table of fields with significant velocity changes
-field_ci_metrics <- list()
-# Process each field to get metrics
-fields <- unique(AllPivots0$field)
-for (field_name in fields) {
-tryCatch({
-# Get field boundary
-field_shape <- AllPivots0 %>% dplyr::filter(field == field_name)
-if (nrow(field_shape) == 0) next
-# Extract CI values
-ci_curr_values <- terra::extract(CI, field_shape)
-ci_prev1_values <- terra::extract(CI_m1, field_shape)
-# Calculate metrics
-mean_ci_curr <- mean(ci_curr_values$CI, na.rm = TRUE)
-mean_ci_prev1 <- mean(ci_prev1_values$CI, na.rm = TRUE)
-velocity <- mean_ci_curr - mean_ci_prev1
-# Store in list
-field_ci_metrics[[field_name]] <- list(
-field = field_name,
-ci_current = mean_ci_curr,
-ci_prev1 = mean_ci_prev1,
-velocity = velocity
-)
-}, error = function(e) {
-safe_log(paste("Error processing field", field_name, "for velocity table:", e$message), "WARNING")
-})
-}
-# Convert list to data frame
-velocity_df <- do.call(rbind, lapply(field_ci_metrics, function(x) {
-data.frame(
-field = x$field,
-ci_current = round(x$ci_current, 2),
-ci_prev1 = round(x$ci_prev1, 2),
-velocity = round(x$velocity, 2),
-direction = ifelse(x$velocity >= 0, "Improving", "Declining")
-)
-}))
-# Select top 5 positive and top 5 negative velocity fields
-top_positive <- velocity_df %>%
-dplyr::filter(velocity > 0) %>%
-dplyr::arrange(desc(velocity)) %>%
-dplyr::slice_head(n = 5)
-top_negative <- velocity_df %>%
-dplyr::filter(velocity < 0) %>%
-dplyr::arrange(velocity) %>%
-dplyr::slice_head(n = 5)
-# Display the tables if we have data
-if (nrow(top_positive) > 0) {
-cat("
Fields with Fastest Improvement
")
-knitr::kable(top_positive %>%
-dplyr::select(Field = field,
-`Current CI` = ci_current,
-`Previous CI` = ci_prev1,
-`Weekly Change` = velocity))
-}
-if (nrow(top_negative) > 0) {
-cat("Fields with Fastest Decline
")
-knitr::kable(top_negative %>%
-dplyr::select(Field = field,
-`Current CI` = ci_current,
-`Previous CI` = ci_prev1,
-`Weekly Change` = velocity))
+if (nrow(pred_rf_current_season) > 0) {
+# Plot predicted yields by age
+ggplot2::ggplot(pred_rf_current_season, ggplot2::aes(x = Age_days, y = predicted_Tcha)) +
+ggplot2::geom_point(size = 2, alpha = 0.6) +
+ggplot2::labs(title = "Predicted Yields for Fields Over 300 Days \nOld Yet to Be Harvested",
+x = "Age (days)",
+y = "Predicted tonnage/ha (Tcha)") +
+ggplot2::scale_y_continuous(limits = c(0, 200)) +
+ggplot2::theme_minimal()
+# Display prediction table
+knitr::kable(pred_rf_current_season,
+digits = 0,
+caption = "Predicted Tonnage/ha for Fields Over 300 Days Old")
+} else {
+cat("No fields over 300 days old without harvest data available for yield prediction.")
}
}, error = function(e) {
-safe_log(paste("Error rendering velocity visualization:", e$message), "ERROR")
-cat("Error generating velocity visualization.
")
+safe_log(paste("Error in yield prediction visualization:", e$message), "ERROR")
+cat("Error generating yield prediction visualizations. See log for details.")
})
-# Generate anomaly timeline visualization
+# Load and prepare yield prediction data with error handling
tryCatch({
-# Use the imported function to create the anomaly timeline
-anomaly_timeline <- create_anomaly_timeline(
-field_boundaries = AllPivots0,
-ci_data = CI_quadrant,
-days_to_include = 90 # Show last 90 days of data
-)
-# Display the timeline
-print(anomaly_timeline)
-}, error = function(e) {
-safe_log(paste("Error generating anomaly timeline:", e$message), "ERROR")
-cat("Error generating anomaly timeline visualization.
")
-})
-# Verify farm_health_data exists and has content
-if (!exists("farm_health_data") || nrow(farm_health_data) == 0) {
-safe_log("farm_health_data not found or empty, generating default data", "WARNING")
-# Create minimal fallback data
-tryCatch({
-# Get fields from boundaries
-fields <- unique(AllPivots0$field)
-# Create basic data frame with just field names
-farm_health_data <- data.frame(
-field = fields,
-mean_ci = rep(NA, length(fields)),
-ci_change = rep(NA, length(fields)),
-ci_uniformity = rep(NA, length(fields)),
-status = rep("Unknown", length(fields)),
-anomaly_type = rep("Unknown", length(fields)),
-priority_level = rep(5, length(fields)), # Low priority
-age_weeks = rep(NA, length(fields)),
-harvest_readiness = rep("Unknown", length(fields)),
-stringsAsFactors = FALSE
-)
-safe_log("Created fallback farm_health_data with basic field information")
-}, error = function(e) {
-safe_log(paste("Error creating fallback farm_health_data:", e$message), "ERROR")
-farm_health_data <<- data.frame(
-field = character(),
-mean_ci = numeric(),
-ci_change = numeric(),
-ci_uniformity = numeric(),
-status = character(),
-anomaly_type = character(),
-priority_level = numeric(),
-age_weeks = numeric(),
-harvest_readiness = character(),
-stringsAsFactors = FALSE
-)
-})
+# Load CI quadrant data and fill missing values
+CI_quadrant <- readRDS(here::here(cumulative_CI_vals_dir, "All_pivots_Cumulative_CI_quadrant_year_v2.rds")) %>%
+dplyr::group_by(model) %>%
+tidyr::fill(field, sub_field, .direction = "downup") %>%
+dplyr::ungroup()
+# Check if tonnage_ha is empty
+if (all(is.na(harvesting_data$tonnage_ha))) {
+safe_log("Lacking historic harvest data, please provide for yield prediction calculation", "WARNING")
+knitr::knit_exit() # Exit the chunk if tonnage_ha is empty
}
-# ADVANCED ANALYTICS FUNCTIONS
-# Note: These functions are now imported from executive_report_utils.R
-# The utility file contains functions for velocity/acceleration indicators,
-# anomaly timeline creation, age cohort mapping, and cohort performance charts
-safe_log("Using analytics functions from executive_report_utils.R")
+# Rename year column to season for consistency
+harvesting_data <- harvesting_data %>% dplyr::rename(season = year)
+# Join CI and yield data
+CI_and_yield <- dplyr::left_join(CI_quadrant, harvesting_data, by = c("field", "sub_field", "season")) %>%
+dplyr::group_by(sub_field, season) %>%
+dplyr::slice(which.max(DOY)) %>%
+dplyr::select(field, sub_field, tonnage_ha, cumulative_CI, DOY, season, sub_area) %>%
+dplyr::mutate(CI_per_day = cumulative_CI / DOY)
+# Define predictors and response variables
+predictors <- c("cumulative_CI", "DOY", "CI_per_day")
+response <- "tonnage_ha"
+# Prepare test and validation datasets
+CI_and_yield_test <- CI_and_yield %>%
+as.data.frame() %>%
+dplyr::filter(!is.na(tonnage_ha))
+CI_and_yield_validation <- CI_and_yield_test
+# Prepare prediction dataset (fields without harvest data)
+prediction_yields <- CI_and_yield %>%
+as.data.frame() %>%
+dplyr::filter(is.na(tonnage_ha))
+# Configure model training parameters
+ctrl <- caret::trainControl(
+method = "cv",
+savePredictions = TRUE,
+allowParallel = TRUE,
+number = 5,
+verboseIter = TRUE
+)
+# Train the model with feature selection
+set.seed(202) # For reproducibility
+model_ffs_rf <- CAST::ffs(
+CI_and_yield_test[, predictors],
+CI_and_yield_test[, response],
+method = "rf",
+trControl = ctrl,
+importance = TRUE,
+withinSE = TRUE,
+tuneLength = 5,
+na.rm = TRUE
+)
+# Function to prepare predictions with consistent naming and formatting
+prepare_predictions <- function(predictions, newdata) {
+return(predictions %>%
+as.data.frame() %>%
+dplyr::rename(predicted_Tcha = ".") %>%
+dplyr::mutate(
+sub_field = newdata$sub_field,
+field = newdata$field,
+Age_days = newdata$DOY,
+total_CI = round(newdata$cumulative_CI, 0),
+predicted_Tcha = round(predicted_Tcha, 0),
+season = newdata$season
+) %>%
+dplyr::select(field, sub_field, Age_days, total_CI, predicted_Tcha, season) %>%
+dplyr::left_join(., newdata, by = c("field", "sub_field", "season"))
+)
+}
+# Predict yields for the validation dataset
+pred_ffs_rf <- prepare_predictions(stats::predict(model_ffs_rf, newdata = CI_and_yield_validation), CI_and_yield_validation)
+# Predict yields for the current season (focus on mature fields over 300 days)
+pred_rf_current_season <- prepare_predictions(stats::predict(model_ffs_rf, newdata = prediction_yields), prediction_yields) %>%
+dplyr::filter(Age_days > 1) %>%
+dplyr::mutate(CI_per_day = round(total_CI / Age_days, 1))
+safe_log("Successfully completed yield prediction calculations")
+}, error = function(e) {
+safe_log(paste("Error in yield prediction:", e$message), "ERROR")
+# Create empty dataframes to prevent errors in subsequent chunks
+pred_ffs_rf <- data.frame()
+pred_rf_current_season <- data.frame()
+})
+# Load and prepare yield prediction data with error handling
+tryCatch({
+# Load CI quadrant data and fill missing values
+CI_quadrant <- readRDS(here::here(cumulative_CI_vals_dir, "All_pivots_Cumulative_CI_quadrant_year_v2.rds")) %>%
+dplyr::group_by(model) %>%
+tidyr::fill(field, sub_field, .direction = "downup") %>%
+dplyr::ungroup()
+# Check if tonnage_ha is empty
+if (all(is.na(harvesting_data$tonnage_ha))) {
+safe_log("Lacking historic harvest data, please provide for yield prediction calculation", "WARNING")
+knitr::knit_exit() # Exit the chunk if tonnage_ha is empty
+}
+# Rename year column to season for consistency
+harvesting_data <- harvesting_data %>% dplyr::rename(season = year)
+# Join CI and yield data
+CI_and_yield <- dplyr::left_join(CI_quadrant, harvesting_data, by = c("field", "sub_field", "season")) %>%
+dplyr::group_by(sub_field, season) %>%
+dplyr::slice(which.max(DOY)) %>%
+dplyr::select(field, sub_field, tonnage_ha, cumulative_CI, DOY, season, sub_area) %>%
+dplyr::mutate(CI_per_day = cumulative_CI / DOY)
+# Define predictors and response variables
+predictors <- c("cumulative_CI", "DOY", "CI_per_day")
+response <- "tonnage_ha"
+# Prepare test and validation datasets
+CI_and_yield_test <- CI_and_yield %>%
+as.data.frame() %>%
+dplyr::filter(!is.na(tonnage_ha))
+CI_and_yield_validation <- CI_and_yield_test
+# Prepare prediction dataset (fields without harvest data)
+prediction_yields <- CI_and_yield %>%
+as.data.frame() %>%
+dplyr::filter(is.na(tonnage_ha))
+# Configure model training parameters
+ctrl <- caret::trainControl(
+method = "cv",
+savePredictions = TRUE,
+allowParallel = TRUE,
+number = 5,
+verboseIter = TRUE
+)
+# Train the model with feature selection
+set.seed(202) # For reproducibility
+model_ffs_rf <- CAST::ffs(
+CI_and_yield_test[, predictors],
+CI_and_yield_test[, response],
+method = "rf",
+trControl = ctrl,
+importance = TRUE,
+withinSE = TRUE,
+tuneLength = 5,
+na.rm = TRUE
+)
+# Function to prepare predictions with consistent naming and formatting
+prepare_predictions <- function(predictions, newdata) {
+return(predictions %>%
+as.data.frame() %>%
+dplyr::rename(predicted_Tcha = ".") %>%
+dplyr::mutate(
+sub_field = newdata$sub_field,
+field = newdata$field,
+Age_days = newdata$DOY,
+total_CI = round(newdata$cumulative_CI, 0),
+predicted_Tcha = round(predicted_Tcha, 0),
+season = newdata$season
+) %>%
+dplyr::select(field, sub_field, Age_days, total_CI, predicted_Tcha, season) %>%
+dplyr::left_join(., newdata, by = c("field", "sub_field", "season"))
+)
+}
+# Predict yields for the validation dataset
+pred_ffs_rf <- prepare_predictions(stats::predict(model_ffs_rf, newdata = CI_and_yield_validation), CI_and_yield_validation)
+# Predict yields for the current season (focus on mature fields over 300 days)
+pred_rf_current_season <- prepare_predictions(stats::predict(model_ffs_rf, newdata = prediction_yields), prediction_yields) %>%
+dplyr::filter(Age_days > 1) %>%
+dplyr::mutate(CI_per_day = round(total_CI / Age_days, 1))
+safe_log("Successfully completed yield prediction calculations")
+}, error = function(e) {
+safe_log(paste("Error in yield prediction:", e$message), "ERROR")
+# Create empty dataframes to prevent errors in subsequent chunks
+pred_ffs_rf <- data.frame()
+pred_rf_current_season <- data.frame()
+})
+# Load CI quadrant data and fill missing values
+CI_quadrant <- readRDS(here::here(cumulative_CI_vals_dir, "All_pivots_Cumulative_CI_quadrant_year_v2.rds")) %>%
+dplyr::group_by(model) %>%
+tidyr::fill(field, sub_field, .direction = "downup") %>%
+dplyr::ungroup()
+# Check if tonnage_ha is empty
+if (all(is.na(harvesting_data$tonnage_ha))) {
+safe_log("Lacking historic harvest data, please provide for yield prediction calculation", "WARNING")
+knitr::knit_exit() # Exit the chunk if tonnage_ha is empty
+}
+# Rename year column to season for consistency
+harvesting_data <- harvesting_data %>% dplyr::rename(season = year)
+# Join CI and yield data
+CI_and_yield <- dplyr::left_join(CI_quadrant, harvesting_data, by = c("field", "sub_field", "season")) %>%
+dplyr::group_by(sub_field, season) %>%
+dplyr::slice(which.max(DOY)) %>%
+dplyr::select(field, sub_field, tonnage_ha, cumulative_CI, DOY, season, sub_area) %>%
+dplyr::mutate(CI_per_day = cumulative_CI / DOY)
+# Define predictors and response variables
+predictors <- c("cumulative_CI", "DOY", "CI_per_day")
+response <- "tonnage_ha"
+# Prepare test and validation datasets
+CI_and_yield_test <- CI_and_yield %>%
+as.data.frame() %>%
+dplyr::filter(!is.na(tonnage_ha))
+CI_and_yield_validation <- CI_and_yield_test
+# Prepare prediction dataset (fields without harvest data)
+prediction_yields <- CI_and_yield %>%
+as.data.frame() %>%
+dplyr::filter(is.na(tonnage_ha))
+# Configure model training parameters
+ctrl <- caret::trainControl(
+method = "cv",
+savePredictions = TRUE,
+allowParallel = TRUE,
+number = 5,
+verboseIter = TRUE
+)
+# Train the model with feature selection
+set.seed(202) # For reproducibility
+model_ffs_rf <- CAST::ffs(
+CI_and_yield_test[, predictors],
+CI_and_yield_test[, response],
+method = "rf",
+trControl = ctrl,
+importance = TRUE,
+withinSE = TRUE,
+tuneLength = 5,
+na.rm = TRUE
+)
+# Function to prepare predictions with consistent naming and formatting
+prepare_predictions <- function(predictions, newdata) {
+return(predictions %>%
+as.data.frame() %>%
+dplyr::rename(predicted_Tcha = ".") %>%
+dplyr::mutate(
+sub_field = newdata$sub_field,
+field = newdata$field,
+Age_days = newdata$DOY,
+total_CI = round(newdata$cumulative_CI, 0),
+predicted_Tcha = round(predicted_Tcha, 0),
+season = newdata$season
+) %>%
+dplyr::select(field, sub_field, Age_days, total_CI, predicted_Tcha, season) %>%
+dplyr::left_join(., newdata, by = c("field", "sub_field", "season"))
+)
+}
+# Predict yields for the validation dataset
+pred_ffs_rf <- prepare_predictions(stats::predict(model_ffs_rf, newdata = CI_and_yield_validation), CI_and_yield_validation)
+# Predict yields for the current season (focus on mature fields over 300 days)
+pred_rf_current_season <- prepare_predictions(stats::predict(model_ffs_rf, newdata = prediction_yields), prediction_yields) %>%
+dplyr::filter(Age_days > 300) %>%
+dplyr::mutate(CI_per_day = round(total_CI / Age_days, 1))
+# Predict yields for the current season (focus on mature fields over 300 days)
+pred_rf_current_season <- prepare_predictions(stats::predict(model_ffs_rf, newdata = prediction_yields), prediction_yields) %>%
+dplyr::filter(Age_days > 1) %>%
+dplyr::mutate(CI_per_day = round(total_CI / Age_days, 1))
+safe_log("Successfully completed yield prediction calculations")
+# Load and prepare yield prediction data with error handling
+tryCatch({
+# Load CI quadrant data and fill missing values
+CI_quadrant <- readRDS(here::here(cumulative_CI_vals_dir, "All_pivots_Cumulative_CI_quadrant_year_v2.rds")) %>%
+dplyr::group_by(model) %>%
+tidyr::fill(field, sub_field, .direction = "downup") %>%
+dplyr::ungroup()
+# Check if tonnage_ha is empty
+if (all(is.na(harvesting_data$tonnage_ha))) {
+safe_log("Lacking historic harvest data, please provide for yield prediction calculation", "WARNING")
+knitr::knit_exit() # Exit the chunk if tonnage_ha is empty
+}
+# Rename year column to season for consistency
+harvesting_data <- harvesting_data %>% dplyr::rename(season = year)
+# Join CI and yield data
+CI_and_yield <- dplyr::left_join(CI_quadrant, harvesting_data, by = c("field", "sub_field", "season")) %>%
+dplyr::group_by(sub_field, season) %>%
+dplyr::slice(which.max(DOY)) %>%
+dplyr::select(field, sub_field, tonnage_ha, cumulative_CI, DOY, season, sub_area) %>%
+dplyr::mutate(CI_per_day = cumulative_CI / DOY)
+# Define predictors and response variables
+predictors <- c("cumulative_CI", "DOY", "CI_per_day")
+response <- "tonnage_ha"
+# Prepare test and validation datasets
+CI_and_yield_test <- CI_and_yield %>%
+as.data.frame() %>%
+dplyr::filter(!is.na(tonnage_ha))
+CI_and_yield_validation <- CI_and_yield_test
+# Prepare prediction dataset (fields without harvest data)
+prediction_yields <- CI_and_yield %>%
+as.data.frame() %>%
+dplyr::filter(is.na(tonnage_ha))
+# Configure model training parameters
+ctrl <- caret::trainControl(
+method = "cv",
+savePredictions = TRUE,
+allowParallel = TRUE,
+number = 5,
+verboseIter = TRUE
+)
+# Train the model with feature selection
+set.seed(202) # For reproducibility
+model_ffs_rf <- CAST::ffs(
+CI_and_yield_test[, predictors],
+CI_and_yield_test[, response],
+method = "rf",
+trControl = ctrl,
+importance = TRUE,
+withinSE = TRUE,
+tuneLength = 5,
+na.rm = TRUE
+)
+# Function to prepare predictions with consistent naming and formatting
+prepare_predictions <- function(predictions, newdata) {
+return(predictions %>%
+as.data.frame() %>%
+dplyr::rename(predicted_Tcha = ".") %>%
+dplyr::mutate(
+sub_field = newdata$sub_field,
+field = newdata$field,
+Age_days = newdata$DOY,
+total_CI = round(newdata$cumulative_CI, 0),
+predicted_Tcha = round(predicted_Tcha, 0),
+season = newdata$season
+) %>%
+dplyr::select(field, sub_field, Age_days, total_CI, predicted_Tcha, season) %>%
+dplyr::left_join(., newdata, by = c("field", "sub_field", "season"))
+)
+}
+# Predict yields for the validation dataset
+pred_ffs_rf <- prepare_predictions(stats::predict(model_ffs_rf, newdata = CI_and_yield_validation), CI_and_yield_validation)
+# Predict yields for the current season (focus on mature fields over 300 days)
+pred_rf_current_season <- prepare_predictions(stats::predict(model_ffs_rf, newdata = prediction_yields), prediction_yields) %>%
+dplyr::filter(Age_days > 1) %>%
+dplyr::mutate(CI_per_day = round(total_CI / Age_days, 1))
+safe_log("Successfully completed yield prediction calculations")
+}, error = function(e) {
+safe_log(paste("Error in yield prediction:", e$message), "ERROR")
+# Create empty dataframes to prevent errors in subsequent chunks
+pred_ffs_rf <- data.frame()
+pred_rf_current_season <- data.frame()
+})
+# Display yield prediction visualizations with error handling
+tryCatch({
+if (nrow(pred_ffs_rf) > 0) {
+# Plot model performance (predicted vs actual)
+ggplot2::ggplot(pred_ffs_rf, ggplot2::aes(y = predicted_Tcha, x = tonnage_ha)) +
+ggplot2::geom_point(size = 2, alpha = 0.6) +
+ggplot2::geom_abline(intercept = 0, slope = 1, linetype = "dashed", color = "red") +
+ggplot2::scale_x_continuous(limits = c(0, 200)) +
+ggplot2::scale_y_continuous(limits = c(0, 200)) +
+ggplot2::labs(title = "Model Performance: \nPredicted vs Actual Tonnage/ha",
+x = "Actual tonnage/ha (Tcha)",
+y = "Predicted tonnage/ha (Tcha)") +
+ggplot2::theme_minimal()
+}
+if (nrow(pred_rf_current_season) > 0) {
+# Plot predicted yields by age
+ggplot2::ggplot(pred_rf_current_season, ggplot2::aes(x = Age_days, y = predicted_Tcha)) +
+ggplot2::geom_point(size = 2, alpha = 0.6) +
+ggplot2::labs(title = "Predicted Yields for Fields Over 300 Days \nOld Yet to Be Harvested",
+x = "Age (days)",
+y = "Predicted tonnage/ha (Tcha)") +
+ggplot2::scale_y_continuous(limits = c(0, 200)) +
+ggplot2::theme_minimal()
+# Display prediction table
+knitr::kable(pred_rf_current_season,
+digits = 0,
+caption = "Predicted Tonnage/ha for Fields Over 300 Days Old")
+} else {
+cat("No fields over 300 days old without harvest data available for yield prediction.")
+}
+}, error = function(e) {
+safe_log(paste("Error in yield prediction visualization:", e$message), "ERROR")
+cat("Error generating yield prediction visualizations. See log for details.")
+})
+AllPivots_merged$field[1:10]
+CI
+path_to_week_current
+terra::rast(path_to_week_current)
+map <- tmap::tm_shape(last_week_dif_raster_abs, unit = "m") # Add raster layer with continuous spectrum (centered at 0 for difference maps)
+map <- map + tmap::tm_raster(col.scale = tm_scale_continuous(values = "RdYlGn",
+midpoint = 0),
+col.legend = tm_legend(title = "Chlorophyll Index (CI) Change",
+orientation = "landscape",
+position = tm_pos_out("center", "bottom")))
+# Complete the map with layout and other elements
+map <- map +
+tmap::tm_scalebar(position = c("right", "bottom"), text.color = "black") +
+tmap::tm_compass(position = c("right", "bottom"), text.color = "black") +
+tmap::tm_shape(AllPivots0) +
+tmap::tm_borders(col = "black") +
+tmap::tm_text("sub_field", size = 0.6, col = "black")
+# Print the map
+print(map)
+# Get versions of specific packages you're using
+packages <- c("here", "sf", "terra", "exactextractr", "tidyverse",
+"tmap", "lubridate", "magrittr", "dplyr", "readr",
+"readxl", "knitr", "rmarkdown", "officedown", "officer")
+package_versions <- sapply(packages, function(x) as.character(packageVersion(x)))
+sessionInfo()
# Chunk 1: setup_parameters
# Set up basic report parameters from input values
report_date <- params$report_date
mail_day <- params$mail_day
borders <- params$borders
-use_breaks <- params$use_breaks # Whether to use breaks or continuous spectrum in visualizations
# Environment setup notes (commented out)
# # Activeer de renv omgeving
# renv::activate()
@@ -215,23 +421,21 @@ use_breaks <- params$use_breaks # Whether to use breaks or continuous spectrum
# Chunk 2: load_libraries
# Configure knitr options
knitr::opts_chunk$set(warning = FALSE, message = FALSE)
-# Path management
+# Load all packages at once with suppressPackageStartupMessages
+suppressPackageStartupMessages({
library(here)
-# Spatial data libraries
library(sf)
library(terra)
library(exactextractr)
-# library(raster) - Removed as it's no longer maintained
-# Data manipulation and visualization
-library(tidyverse) # Includes dplyr, ggplot2, etc.
+library(tidyverse)
library(tmap)
library(lubridate)
library(zoo)
-# Machine learning
library(rsample)
library(caret)
library(randomForest)
library(CAST)
+})
# Load custom utility functions
tryCatch({
source("report_utils.R")
@@ -244,199 +448,21 @@ source(here::here("r_app", "report_utils.R"))
stop("Could not load report_utils.R from either location: ", e$message)
})
})
-# Load executive report utilities
-tryCatch({
-source("executive_report_utils.R")
-}, error = function(e) {
-message(paste("Error loading executive_report_utils.R:", e$message))
-# Try alternative path if the first one fails
-tryCatch({
-source(here::here("r_app", "executive_report_utils.R"))
-}, error = function(e) {
-stop("Could not load executive_report_utils.R from either location: ", e$message)
-})
-})
-# Chunk 1: setup_parameters
-# Set up basic report parameters from input values
-report_date <- params$report_date
-mail_day <- params$mail_day
-borders <- params$borders
-use_breaks <- params$use_breaks # Whether to use breaks or continuous spectrum in visualizations
-# Environment setup notes (commented out)
-# # Activeer de renv omgeving
-# renv::activate()
-# renv::deactivate()
-# # Optioneel: Herstel de omgeving als dat nodig is
-# # Je kunt dit commentaar geven als je het normaal niet wilt uitvoeren
-# renv::restore()
-# Chunk 2: load_libraries
-# Configure knitr options
-knitr::opts_chunk$set(warning = FALSE, message = FALSE)
-# Path management
-library(here)
-# Spatial data libraries
-library(sf)
-library(terra)
-library(exactextractr)
-# library(raster) - Removed as it's no longer maintained
-# Data manipulation and visualization
-library(tidyverse) # Includes dplyr, ggplot2, etc.
-library(tmap)
-library(lubridate)
-library(zoo)
-# Machine learning
-library(rsample)
-library(caret)
-library(randomForest)
-library(CAST)
-# Load custom utility functions
-tryCatch({
-source("report_utils.R")
-}, error = function(e) {
-message(paste("Error loading report_utils.R:", e$message))
-# Try alternative path if the first one fails
-tryCatch({
-source(here::here("r_app", "report_utils.R"))
-}, error = function(e) {
-stop("Could not load report_utils.R from either location: ", e$message)
-})
-})
-# Load executive report utilities
-tryCatch({
-source("executive_report_utils.R")
-}, error = function(e) {
-message(paste("Error loading executive_report_utils.R:", e$message))
-# Try alternative path if the first one fails
-tryCatch({
-source(here::here("r_app", "executive_report_utils.R"))
-}, error = function(e) {
-stop("Could not load executive_report_utils.R from either location: ", e$message)
-})
-})
-# Chunk 1: setup_parameters
-# Set up basic report parameters from input values
-report_date <- params$report_date
-mail_day <- params$mail_day
-borders <- params$borders
-use_breaks <- params$use_breaks # Whether to use breaks or continuous spectrum in visualizations
-# Environment setup notes (commented out)
-# # Activeer de renv omgeving
-# renv::activate()
-# renv::deactivate()
-# # Optioneel: Herstel de omgeving als dat nodig is
-# # Je kunt dit commentaar geven als je het normaal niet wilt uitvoeren
-# renv::restore()
-# Chunk 2: load_libraries
-# Configure knitr options
-knitr::opts_chunk$set(warning = FALSE, message = FALSE)
-# Path management
-library(here)
-# Spatial data libraries
-library(sf)
-library(terra)
-library(exactextractr)
-# library(raster) - Removed as it's no longer maintained
-# Data manipulation and visualization
-library(tidyverse) # Includes dplyr, ggplot2, etc.
-library(tmap)
-library(lubridate)
-library(zoo)
-# Machine learning
-library(rsample)
-library(caret)
-library(randomForest)
-library(CAST)
-# Load custom utility functions
-# tryCatch({
-# source("report_utils.R")
-# }, error = function(e) {
-# message(paste("Error loading report_utils.R:", e$message))
-# # Try alternative path if the first one fails
-# tryCatch({
-source(here::here("r_app", "report_utils.R"))
-# }, error = function(e) {
-# stop("Could not load report_utils.R from either location: ", e$message)
-# })
-# })
-# Load executive report utilities
-# tryCatch({
-# source("executive_report_utils.R")
-# }, error = function(e) {
-# message(paste("Error loading executive_report_utils.R:", e$message))
-# # Try alternative path if the first one fails
-# tryCatch({
-source(here::here("r_app", "executive_report_utils.R"))
-# Chunk 1: setup_parameters
-# Set up basic report parameters from input values
-report_date <- params$report_date
-mail_day <- params$mail_day
-borders <- params$borders
-use_breaks <- params$use_breaks # Whether to use breaks or continuous spectrum in visualizations
-# Environment setup notes (commented out)
-# # Activeer de renv omgeving
-# renv::activate()
-# renv::deactivate()
-# # Optioneel: Herstel de omgeving als dat nodig is
-# # Je kunt dit commentaar geven als je het normaal niet wilt uitvoeren
-# renv::restore()
-# Chunk 2: load_libraries
-# Configure knitr options
-knitr::opts_chunk$set(warning = FALSE, message = FALSE)
-# Path management
-library(here)
-# Spatial data libraries
-library(sf)
-library(terra)
-library(exactextractr)
-# library(raster) - Removed as it's no longer maintained
-# Data manipulation and visualization
-library(tidyverse) # Includes dplyr, ggplot2, etc.
-library(tmap)
-library(lubridate)
-library(zoo)
-# Machine learning
-library(rsample)
-library(caret)
-library(randomForest)
-library(CAST)
-# Load custom utility functions
-# tryCatch({
-# source("report_utils.R")
-# }, error = function(e) {
-# message(paste("Error loading report_utils.R:", e$message))
-# # Try alternative path if the first one fails
-# tryCatch({
-source(here::here("r_app", "report_utils.R"))
-# }, error = function(e) {
-# stop("Could not load report_utils.R from either location: ", e$message)
-# })
-# })
-# Load executive report utilities
-# tryCatch({
-# source("executive_report_utils.R")
-# }, error = function(e) {
-# message(paste("Error loading executive_report_utils.R:", e$message))
-# # Try alternative path if the first one fails
-# tryCatch({
-source(here::here("r_app", "exec_dashboard", "executive_report_utils.R"))
-# }, error = function(e) {
-# stop("Could not load executive_report_utils.R from either location: ", e$message)
-# })
-# })
# Chunk 3: initialize_project_config
# Set the project directory from parameters
project_dir <- params$data_dir
# Source project parameters with error handling
-# tryCatch({
+tryCatch({
source(here::here("r_app", "parameters_project.R"))
-# }, error = function(e) {
-# stop("Error loading parameters_project.R: ", e$message)
-# })
+}, error = function(e) {
+stop("Error loading parameters_project.R: ", e$message)
+})
# Log initial configuration
safe_log("Starting the R Markdown script")
safe_log(paste("mail_day params:", params$mail_day))
safe_log(paste("report_date params:", params$report_date))
safe_log(paste("mail_day variable:", mail_day))
+# Chunk 4: calculate_dates_and_weeks
# Set locale for consistent date formatting
Sys.setlocale("LC_TIME", "C")
# Initialize date variables from parameters
@@ -465,8 +491,6 @@ today_minus_1 <- as.character(lubridate::ymd(today))
today_minus_2 <- as.character(lubridate::ymd(today) - 7)
today_minus_3 <- as.character(lubridate::ymd(today) - 14)
}
-# Generate subtitle for report
-subtitle_var <- paste("Report generated on", Sys.Date())
# Calculate week numbers for previous weeks
week_minus_1 <- week - 1
week_minus_2 <- week - 2
@@ -478,35 +502,11 @@ year <- lubridate::year(today)
year_1 <- lubridate::year(today_minus_1)
year_2 <- lubridate::year(today_minus_2)
year_3 <- lubridate::year(today_minus_3)
-# Load CI index data with error handling
-tryCatch({
-CI_quadrant <- readRDS(here::here(cumulative_CI_vals_dir, "All_pivots_Cumulative_CI_quadrant_year_v2.rds"))
-safe_log("Successfully loaded CI quadrant data")
-}, error = function(e) {
-stop("Error loading CI quadrant data: ", e$message)
-})
-# Get file paths for different weeks using the utility function
-tryCatch({
-path_to_week_current = get_week_path(weekly_CI_mosaic, today, 0)
-path_to_week_minus_1 = get_week_path(weekly_CI_mosaic, today, -1)
-path_to_week_minus_2 = get_week_path(weekly_CI_mosaic, today, -2)
-path_to_week_minus_3 = get_week_path(weekly_CI_mosaic, today, -3)
-# Log the calculated paths
-safe_log("Required mosaic paths:")
-safe_log(paste("Path to current week:", path_to_week_current))
-safe_log(paste("Path to week minus 1:", path_to_week_minus_1))
-safe_log(paste("Path to week minus 2:", path_to_week_minus_2))
-safe_log(paste("Path to week minus 3:", path_to_week_minus_3))
-# Validate that files exist
-if (!file.exists(path_to_week_current)) warning("Current week mosaic file does not exist: ", path_to_week_current)
-if (!file.exists(path_to_week_minus_1)) warning("Week minus 1 mosaic file does not exist: ", path_to_week_minus_1)
-if (!file.exists(path_to_week_minus_2)) warning("Week minus 2 mosaic file does not exist: ", path_to_week_minus_2)
-if (!file.exists(path_to_week_minus_3)) warning("Week minus 3 mosaic file does not exist: ", path_to_week_minus_3)
-# Load raster data with terra functions
-CI <- terra::rast(path_to_week_current)$CI
-CI_m1 <- terra::rast(path_to_week_minus_1)$CI
-CI_m2 <- terra::rast(path_to_week_minus_2)$CI
-CI_m3 <- terra::rast(path_to_week_minus_3)$CI
-}, error = function(e) {
-stop("Error loading raster data: ", e$message)
-})
+sessionInfo()
+source("r_app/extract_current_versions.R")
+source("r_app/package_manager.R")
+source("r_app/package_manager.R")
+source("r_app/package_manager.R")
+source("r_app/package_manager.R")
+source("r_app/package_manager.R")
+source("r_app/package_manager.R")
diff --git a/.Rprofile b/.Rprofile
new file mode 100644
index 0000000..81b960f
--- /dev/null
+++ b/.Rprofile
@@ -0,0 +1 @@
+source("renv/activate.R")
diff --git a/PACKAGE_MANAGEMENT.md b/PACKAGE_MANAGEMENT.md
new file mode 100644
index 0000000..f0965bc
--- /dev/null
+++ b/PACKAGE_MANAGEMENT.md
@@ -0,0 +1,94 @@
+# SmartCane Project - Package Management
+
+## Quick Start
+
+### For New Team Members
+1. Open R/RStudio
+2. Set working directory to the project root: `setwd("path/to/smartcane")`
+3. Run: `source("r_app/package_manager.R")`
+4. Type `y` when prompted
+5. Wait for completion ✅
+
+### For Existing Team Members (After Git Pull)
+Same steps as above - the script will check for updates automatically.
+
+## What This Script Does
+
+1. **Initializes renv** - Creates isolated package environment
+2. **Checks package versions** - Compares installed vs required
+3. **Installs/Updates packages** - Only if needed
+4. **Creates lockfile** - `renv.lock` for exact reproducibility
+5. **Generates reports** - Console output + `package_manager.log`
+
+## Key Features
+
+- ✅ **Minimum version requirements** (allows patch updates)
+- ✅ **Critical package locking** (tmap v4 for new syntax)
+- ✅ **Automatic installation** of missing packages
+- ✅ **Console + Log output** for debugging
+- ✅ **Cross-platform compatibility**
+
+## Required Packages & Versions
+
+| Package | Min Version | Purpose |
+|---------|-------------|---------|
+| tmap | 4.0.0 | **CRITICAL** - New syntax used |
+| tidyverse | 2.0.0 | Data manipulation |
+| sf | 1.0.0 | Spatial data |
+| terra | 1.7.0 | Raster processing |
+| rmarkdown | 2.21.0 | Report generation |
+
+## Workflow
+
+### Development Workflow
+```
+1. 👨💻 Developer: Make changes → run package_manager.R → test → commit + push
+2. 👥 Teammate: Pull → run package_manager.R → test
+3. 🚀 Production: Pull → run package_manager.R → deploy
+```
+
+### Files Created
+- `renv.lock` - Exact package versions (commit this!)
+- `package_manager.log` - Installation log (don't commit)
+- `renv/` folder - Package cache (don't commit)
+
+## Troubleshooting
+
+### "Package failed to install"
+- Check internet connection
+- Update R to latest version
+- Install system dependencies (varies by OS)
+
+### "Version conflicts"
+- Delete `renv/` folder
+- Run script again for clean install
+
+### "renv not working"
+- Install manually: `install.packages("renv")`
+- Restart R session
+- Run script again
+
+## Team Guidelines
+
+1. **Always run** `package_manager.R` after pulling changes
+2. **Commit** `renv.lock` to git (not `renv/` folder)
+3. **Don't modify** package versions in scripts - use this manager
+4. **Report issues** in the log file to team
+
+## Advanced Usage
+
+### Restore from lockfile only:
+```r
+renv::restore()
+```
+
+### Add new package requirement:
+1. Edit `REQUIRED_PACKAGES` in `package_manager.R`
+2. Run the script
+3. Commit updated `renv.lock`
+
+### Check status without changes:
+```r
+source("r_app/package_manager.R")
+# Then just read the log or run generate_package_report()
+```
diff --git a/generated_package_config.R b/generated_package_config.R
new file mode 100644
index 0000000..a5c98ec
--- /dev/null
+++ b/generated_package_config.R
@@ -0,0 +1,42 @@
+# Package requirements with your current working versions
+REQUIRED_PACKAGES <- list(
+ # Core data manipulation
+ "dplyr" = "1.1.4",
+ "here" = "1.0.1",
+ "lubridate" = "1.9.4",
+ "readr" = "2.1.5",
+ "readxl" = "1.4.5",
+ "stringr" = "1.5.1",
+ "tidyr" = "1.3.1",
+
+ # Spatial data
+ "exactextractr" = "0.10.0",
+ "raster" = "3.6.32",
+ "sf" = "1.0.19",
+ "terra" = "1.8.43", # CRITICAL: for raster processing
+
+ # Visualization
+ "ggplot2" = "3.5.1",
+ "tmap" = "4.0", # CRITICAL: for tm_scale_continuous() syntax
+
+ # Reporting
+ "knitr" = "1.50",
+
+ # Tidyverse
+ "purrr" = "1.0.2",
+ "tidyverse" = "2.0.0",
+
+ # Other packages
+ "caret" = "7.0.1",
+ "CAST" = "1.0.3",
+ "furrr" = "0.3.1",
+ "future" = "1.40.0",
+ "gridExtra" = "2.3",
+ "parallel" = "4.4.2",
+ "progressr" = "0.15.1",
+ "randomForest" = "4.7.1.2",
+ "reshape2" = "1.4.4",
+ "rsample" = "1.3.0",
+ "tools" = "4.4.2",
+ "zoo" = "1.8.13"
+)
diff --git a/package_manager.log b/package_manager.log
new file mode 100644
index 0000000..64f5048
--- /dev/null
+++ b/package_manager.log
@@ -0,0 +1,111 @@
+[INFO] 2025-06-24 14:49:29 - SmartCane Project - Package Manager Started
+[INFO] 2025-06-24 14:49:29 - Working directory: C:/Users/timon/Resilience BV/4020 SCane ESA DEMO - Documenten/General/4020 SCDEMO Team/4020 TechnicalData/WP3/smartcane
+[INFO] 2025-06-24 14:49:29 - Checking renv initialization...
+[INFO] 2025-06-24 14:49:29 - ✓ renv already initialized
+[INFO] 2025-06-24 14:49:29 - ✓ renv already active
+[INFO] 2025-06-24 14:49:29 -
+=== INITIAL STATE ===
+[INFO] 2025-06-24 14:49:29 - === PACKAGE REPORT ===
+[INFO] 2025-06-24 14:49:29 - dplyr | Required: >= 1.1.4 | Installed: 1.1.4 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - here | Required: >= 1.0.1 | Installed: 1.0.1 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - lubridate | Required: >= 1.9.4 | Installed: 1.9.4 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - readr | Required: >= 2.1.5 | Installed: 2.1.5 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - readxl | Required: >= 1.4.5 | Installed: 1.4.5 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - stringr | Required: >= 1.5.1 | Installed: 1.5.1 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - tidyr | Required: >= 1.3.1 | Installed: 1.3.1 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - purrr | Required: >= 1.0.2 | Installed: 1.0.2 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - magrittr | Required: >= 2.0.0 | Installed: 2.0.3 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - exactextractr | Required: >= 0.10.0 | Installed: 0.10.0 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - raster | Required: >= 3.6.32 | Installed: 3.6.32 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - sf | Required: >= 1.0.19 | Installed: 1.0.19 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - terra | Required: >= 1.8.43 | Installed: 1.8.43 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - ggplot2 | Required: >= 3.5.1 | Installed: 3.5.1 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - tmap | Required: >= 4.0 | Installed: 4.0 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - gridExtra | Required: >= 2.3 | Installed: 2.3 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - knitr | Required: >= 1.50 | Installed: 1.50 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - rmarkdown | Required: >= 2.21.0 | Installed: 2.29 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - tidyverse | Required: >= 2.0.0 | Installed: 2.0.0 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - caret | Required: >= 7.0.1 | Installed: 7.0.1 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - CAST | Required: >= 1.0.3 | Installed: 1.0.3 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - randomForest | Required: >= 4.7.1.2 | Installed: 4.7.1.2 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - rsample | Required: >= 1.3.0 | Installed: 1.3.0 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - furrr | Required: >= 0.3.1 | Installed: 0.3.1 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - future | Required: >= 1.40.0 | Installed: 1.40.0 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - progressr | Required: >= 0.15.1 | Installed: 0.15.1 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - reshape2 | Required: >= 1.4.4 | Installed: 1.4.4 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - zoo | Required: >= 1.8.13 | Installed: 1.8.13 | ✅ OK
+[INFO] 2025-06-24 14:49:29 - === END PACKAGE REPORT ===
+[INFO] 2025-06-24 14:49:29 -
+=== PACKAGE INSTALLATION/UPDATES ===
+[INFO] 2025-06-24 14:49:29 - === PACKAGE MANAGEMENT STARTED ===
+[INFO] 2025-06-24 14:49:29 - R version: R version 4.4.2 (2024-10-31 ucrt)
+[INFO] 2025-06-24 14:49:29 - ✓ dplyr version 1.1.4 meets requirement (>= 1.1.4)
+[INFO] 2025-06-24 14:49:29 - ✓ here version 1.0.1 meets requirement (>= 1.0.1)
+[INFO] 2025-06-24 14:49:29 - ✓ lubridate version 1.9.4 meets requirement (>= 1.9.4)
+[INFO] 2025-06-24 14:49:29 - ✓ readr version 2.1.5 meets requirement (>= 2.1.5)
+[INFO] 2025-06-24 14:49:29 - ✓ readxl version 1.4.5 meets requirement (>= 1.4.5)
+[INFO] 2025-06-24 14:49:29 - ✓ stringr version 1.5.1 meets requirement (>= 1.5.1)
+[INFO] 2025-06-24 14:49:29 - ✓ tidyr version 1.3.1 meets requirement (>= 1.3.1)
+[INFO] 2025-06-24 14:49:29 - ✓ purrr version 1.0.2 meets requirement (>= 1.0.2)
+[INFO] 2025-06-24 14:49:29 - ✓ magrittr version 2.0.3 meets requirement (>= 2.0.0)
+[INFO] 2025-06-24 14:49:29 - ✓ exactextractr version 0.10.0 meets requirement (>= 0.10.0)
+[INFO] 2025-06-24 14:49:29 - ✓ raster version 3.6.32 meets requirement (>= 3.6.32)
+[INFO] 2025-06-24 14:49:29 - ✓ sf version 1.0.19 meets requirement (>= 1.0.19)
+[INFO] 2025-06-24 14:49:29 - ✓ terra version 1.8.43 meets requirement (>= 1.8.43)
+[INFO] 2025-06-24 14:49:29 - ✓ ggplot2 version 3.5.1 meets requirement (>= 3.5.1)
+[INFO] 2025-06-24 14:49:29 - ✓ tmap version 4.0 meets requirement (>= 4.0)
+[INFO] 2025-06-24 14:49:29 - ✓ gridExtra version 2.3 meets requirement (>= 2.3)
+[INFO] 2025-06-24 14:49:29 - ✓ knitr version 1.50 meets requirement (>= 1.50)
+[INFO] 2025-06-24 14:49:29 - ✓ rmarkdown version 2.29 meets requirement (>= 2.21.0)
+[INFO] 2025-06-24 14:49:29 - ✓ tidyverse version 2.0.0 meets requirement (>= 2.0.0)
+[INFO] 2025-06-24 14:49:29 - ✓ caret version 7.0.1 meets requirement (>= 7.0.1)
+[INFO] 2025-06-24 14:49:29 - ✓ CAST version 1.0.3 meets requirement (>= 1.0.3)
+[INFO] 2025-06-24 14:49:29 - ✓ randomForest version 4.7.1.2 meets requirement (>= 4.7.1.2)
+[INFO] 2025-06-24 14:49:29 - ✓ rsample version 1.3.0 meets requirement (>= 1.3.0)
+[INFO] 2025-06-24 14:49:29 - ✓ furrr version 0.3.1 meets requirement (>= 0.3.1)
+[INFO] 2025-06-24 14:49:29 - ✓ future version 1.40.0 meets requirement (>= 1.40.0)
+[INFO] 2025-06-24 14:49:29 - ✓ progressr version 0.15.1 meets requirement (>= 0.15.1)
+[INFO] 2025-06-24 14:49:29 - ✓ reshape2 version 1.4.4 meets requirement (>= 1.4.4)
+[INFO] 2025-06-24 14:49:29 - ✓ zoo version 1.8.13 meets requirement (>= 1.8.13)
+[INFO] 2025-06-24 14:49:29 - Package management complete: 28 success, 0 failures
+[INFO] 2025-06-24 14:49:29 - Updating renv lockfile...
+[ERROR] 2025-06-24 14:49:33 - ✗ Failed to update lockfile: aborting snapshot due to pre-flight validation failure
+[INFO] 2025-06-24 14:49:33 -
+=== FINAL STATE ===
+[INFO] 2025-06-24 14:49:33 - === PACKAGE REPORT ===
+[INFO] 2025-06-24 14:49:33 - dplyr | Required: >= 1.1.4 | Installed: 1.1.4 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - here | Required: >= 1.0.1 | Installed: 1.0.1 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - lubridate | Required: >= 1.9.4 | Installed: 1.9.4 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - readr | Required: >= 2.1.5 | Installed: 2.1.5 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - readxl | Required: >= 1.4.5 | Installed: 1.4.5 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - stringr | Required: >= 1.5.1 | Installed: 1.5.1 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - tidyr | Required: >= 1.3.1 | Installed: 1.3.1 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - purrr | Required: >= 1.0.2 | Installed: 1.0.2 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - magrittr | Required: >= 2.0.0 | Installed: 2.0.3 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - exactextractr | Required: >= 0.10.0 | Installed: 0.10.0 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - raster | Required: >= 3.6.32 | Installed: 3.6.32 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - sf | Required: >= 1.0.19 | Installed: 1.0.19 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - terra | Required: >= 1.8.43 | Installed: 1.8.43 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - ggplot2 | Required: >= 3.5.1 | Installed: 3.5.1 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - tmap | Required: >= 4.0 | Installed: 4.0 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - gridExtra | Required: >= 2.3 | Installed: 2.3 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - knitr | Required: >= 1.50 | Installed: 1.50 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - rmarkdown | Required: >= 2.21.0 | Installed: 2.29 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - tidyverse | Required: >= 2.0.0 | Installed: 2.0.0 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - caret | Required: >= 7.0.1 | Installed: 7.0.1 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - CAST | Required: >= 1.0.3 | Installed: 1.0.3 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - randomForest | Required: >= 4.7.1.2 | Installed: 4.7.1.2 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - rsample | Required: >= 1.3.0 | Installed: 1.3.0 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - furrr | Required: >= 0.3.1 | Installed: 0.3.1 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - future | Required: >= 1.40.0 | Installed: 1.40.0 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - progressr | Required: >= 0.15.1 | Installed: 0.15.1 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - reshape2 | Required: >= 1.4.4 | Installed: 1.4.4 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - zoo | Required: >= 1.8.13 | Installed: 1.8.13 | ✅ OK
+[INFO] 2025-06-24 14:49:33 - === END PACKAGE REPORT ===
+[INFO] 2025-06-24 14:49:33 - Package management completed in 7.72 seconds
+[INFO] 2025-06-24 14:49:33 - Log saved to: C:/Users/timon/Resilience BV/4020 SCane ESA DEMO - Documenten/General/4020 SCDEMO Team/4020 TechnicalData/WP3/smartcane/package_manager.log
+[SUCCESS] 2025-06-24 14:49:33 - 🎉 All packages successfully managed!
+[INFO] 2025-06-24 14:49:33 - 📋 Next steps:
+[INFO] 2025-06-24 14:49:33 - 1. Test your R scripts to ensure everything works
+[INFO] 2025-06-24 14:49:33 - 2. Commit renv.lock to version control
+[INFO] 2025-06-24 14:49:33 - 3. Share this script with your team
diff --git a/r_app/CI_report_dashboard_planet.Rmd b/r_app/CI_report_dashboard_planet.Rmd
index 9b24420..a30c689 100644
--- a/r_app/CI_report_dashboard_planet.Rmd
+++ b/r_app/CI_report_dashboard_planet.Rmd
@@ -10,7 +10,7 @@ output:
# html_document:
# toc: yes
# df_print: paged
- word_document:
+ word_document:
reference_docx: !expr file.path("word-styles-reference-var1.docx")
toc: no
editor_options:
@@ -157,19 +157,19 @@ tryCatch({
safe_log(paste("Path to week minus 1:", path_to_week_minus_1))
safe_log(paste("Path to week minus 2:", path_to_week_minus_2))
safe_log(paste("Path to week minus 3:", path_to_week_minus_3))
-
+
# Validate that files exist
if (!file.exists(path_to_week_current)) warning("Current week mosaic file does not exist: ", path_to_week_current)
if (!file.exists(path_to_week_minus_1)) warning("Week minus 1 mosaic file does not exist: ", path_to_week_minus_1)
if (!file.exists(path_to_week_minus_2)) warning("Week minus 2 mosaic file does not exist: ", path_to_week_minus_2)
if (!file.exists(path_to_week_minus_3)) warning("Week minus 3 mosaic file does not exist: ", path_to_week_minus_3)
-
+
# Load raster data with terra functions
CI <- terra::rast(path_to_week_current)$CI
CI_m1 <- terra::rast(path_to_week_minus_1)$CI
CI_m2 <- terra::rast(path_to_week_minus_2)$CI
CI_m3 <- terra::rast(path_to_week_minus_3)$CI
-
+
}, error = function(e) {
stop("Error loading raster data: ", e$message)
})
@@ -181,7 +181,7 @@ tryCatch({
# Calculate weekly difference
last_week_dif_raster_abs <- (CI - CI_m1)
safe_log("Calculated weekly difference raster")
-
+
# Calculate three-week difference
three_week_dif_raster_abs <- (CI - CI_m3)
safe_log("Calculated three-week difference raster")
@@ -261,16 +261,16 @@ Report Date: **`r report_date_formatted`**
## Report Summary
-**Farm Location:** `r farm_name`
-**Report Period:** Week `r week` of `r current_year`
-**Data Source:** Planet Labs Satellite Imagery
-**Analysis Type:** Chlorophyll Index (CI) Monitoring
+**Farm Location:** `r farm_name`
+**Report Period:** Week `r week` of `r current_year`
+**Data Source:** Planet Labs Satellite Imagery
+**Analysis Type:** Chlorophyll Index (CI) Monitoring
-**Field Coverage:**
-- Total Fields Monitored: `r total_fields`
-- Total Area: `r total_area_ha` hectares
+**Field Coverage:**
+- Total Fields Monitored: `r total_fields`
+- Total Area: `r total_area_ha` hectares
-**Report Generated:** `r format(Sys.Date(), "%B %d, %Y at %H:%M")`
+**Report Generated:** `r format(Sys.Date(), "%B %d, %Y")`
---
@@ -279,7 +279,7 @@ Report Date: **`r report_date_formatted`**
This automated report provides weekly analysis of sugarcane crop health using satellite-derived Chlorophyll Index (CI) measurements. The analysis helps identify:
- Field-level crop health variations
-- Weekly changes in crop vigor
+- Weekly changes in crop vigor
- Areas requiring agricultural attention
- Growth patterns across different field sections
@@ -291,13 +291,40 @@ This automated report provides weekly analysis of sugarcane crop health using sa
-\pagebreak
+\newpage
+
+
+```{=openxml}
+
+
+
+
+
+
+
+
+
+
+ TABLE OF CONTENTS
+
+
+```
+
+```{=openxml}
+
+
+ Update this field to generate table of contents
+
+
+```
+
+\newpage
-\pagebreak
+\newpage
# Explanation of the Report
This report provides a detailed analysis of your sugarcane fields based on satellite imagery, helping you monitor crop health and development throughout the growing season. The data is processed weekly to give you timely insights for optimal farm management decisions.
@@ -332,72 +359,71 @@ Use these insights to identify areas that may need irrigation, fertilization, or
\pagebreak
# RGB Satellite Image - Current Week (if available)
-```{r render_rgb_map, echo=FALSE, fig.height=6.9, fig.width=9, message=FALSE, warning=FALSE}
+```{r render_rgb_map, echo=FALSE, fig.height=7, fig.width=10, message=FALSE, warning=FALSE}
# Check if RGB bands are available and create RGB map
tryCatch({
# Load the full raster to check available bands
full_raster <- terra::rast(path_to_week_current)
available_bands <- names(full_raster)
-
+
# Check if RGB bands are available (look for red, green, blue or similar naming)
- rgb_bands_available <- any(grepl("red|Red|RED", available_bands, ignore.case = TRUE)) &&
- any(grepl("green|Green|GREEN", available_bands, ignore.case = TRUE)) &&
+ rgb_bands_available <- any(grepl("red|Red|RED", available_bands, ignore.case = TRUE)) &&
+ any(grepl("green|Green|GREEN", available_bands, ignore.case = TRUE)) &&
any(grepl("blue|Blue|BLUE", available_bands, ignore.case = TRUE))
-
+
# Alternative check for numbered bands that might be RGB (e.g., band_1, band_2, band_3)
if (!rgb_bands_available && length(available_bands) >= 3) {
# Check if we have at least 3 bands that could potentially be RGB
potential_rgb_bands <- grep("band_[1-3]|B[1-3]|[1-3]", available_bands, ignore.case = TRUE)
rgb_bands_available <- length(potential_rgb_bands) >= 3
}
-
+
if (rgb_bands_available) {
safe_log("RGB bands detected - creating RGB visualization")
-
+
# Try to extract RGB bands (prioritize named bands first)
red_band <- NULL
- green_band <- NULL
+ green_band <- NULL
blue_band <- NULL
-
+
# Look for named RGB bands first
red_candidates <- grep("red|Red|RED", available_bands, ignore.case = TRUE, value = TRUE)
green_candidates <- grep("green|Green|GREEN", available_bands, ignore.case = TRUE, value = TRUE)
blue_candidates <- grep("blue|Blue|BLUE", available_bands, ignore.case = TRUE, value = TRUE)
-
+
if (length(red_candidates) > 0) red_band <- red_candidates[1]
if (length(green_candidates) > 0) green_band <- green_candidates[1]
if (length(blue_candidates) > 0) blue_band <- blue_candidates[1]
-
+
# Fallback to numbered bands if named bands not found
if (is.null(red_band) || is.null(green_band) || is.null(blue_band)) {
if (length(available_bands) >= 3) {
# Assume first 3 bands are RGB (common convention)
red_band <- available_bands[1]
- green_band <- available_bands[2]
+ green_band <- available_bands[2]
blue_band <- available_bands[3]
}
}
-
+
if (!is.null(red_band) && !is.null(green_band) && !is.null(blue_band)) {
# Extract RGB bands
rgb_raster <- c(full_raster[[red_band]], full_raster[[green_band]], full_raster[[blue_band]])
names(rgb_raster) <- c("red", "green", "blue")
-
- # Create RGB map
+ # Create RGB map
map <- tmap::tm_shape(rgb_raster, unit = "m") +
tmap::tm_rgb() +
- tmap::tm_scalebar(position = c("right", "bottom"), text.color = "white") +
- tmap::tm_compass(position = c("right", "bottom"), text.color = "white") +
- tmap::tm_shape(AllPivots0) +
+ tmap::tm_scalebar(position = tm_pos_out("right", "bottom"), text.color = "black") +
+ tmap::tm_compass(position = tm_pos_out("right", "bottom"), text.color = "black") +
+ tmap::tm_shape(AllPivots0) +
tmap::tm_borders(col = "white", lwd = 2) +
tmap::tm_text("sub_field", size = 0.6, col = "white") +
tmap::tm_layout(main.title = paste0("RGB Satellite Image - Week ", week),
main.title.size = 0.8,
main.title.color = "black")
-
+
# Print the map
print(map)
-
+
safe_log("RGB map created successfully")
} else {
safe_log("Could not identify RGB bands despite detection", "WARNING")
@@ -413,26 +439,24 @@ tryCatch({
})
```
-\pagebreak
+\newpage
# Chlorophyll Index (CI) Overview Map - Current Week
-```{r render_ci_overview_map, echo=FALSE, fig.height=6.9, fig.width=9, message=FALSE, warning=FALSE}
+```{r render_ci_overview_map, echo=FALSE, fig.height=7, fig.width=10, message=FALSE, warning=FALSE}
# Create overview chlorophyll index map
tryCatch({ # Base shape
map <- tmap::tm_shape(CI, unit = "m") # Add raster layer with continuous spectrum (fixed scale 1-8 for consistent comparison)
map <- map + tmap::tm_raster(col.scale = tm_scale_continuous(values = "brewer.rd_yl_gn",
- limits = c(1, 8)),
- col.legend = tm_legend(title = "Chlorophyll Index (CI)",
- orientation = "landscape",
+ limits = c(1, 8)), col.legend = tm_legend(title = "Chlorophyll Index (CI)",
+ orientation = "landscape",
position = tm_pos_out("center", "bottom")))
-
- # Complete the map with layout and other elements
+ # Complete the map with layout and other elements
map <- map +
- tmap::tm_scalebar(position = c("right", "bottom"), text.color = "black") +
- tmap::tm_compass(position = c("right", "bottom"), text.color = "black") +
- tmap::tm_shape(AllPivots0) +
+ tmap::tm_scalebar(position = tm_pos_out("right", "bottom"), text.color = "black") +
+ tmap::tm_compass(position = tm_pos_out("right", "bottom"), text.color = "black") +
+ tmap::tm_shape(AllPivots0) +
tmap::tm_borders(col = "black") +
tmap::tm_text("sub_field", size = 0.6, col = "black")
-
+
# Print the map
print(map)
}, error = function(e) {
@@ -440,29 +464,30 @@ tryCatch({ # Base shape
plot(1, type="n", axes=FALSE, xlab="", ylab="")
text(1, 1, "Error creating CI overview map", cex=1.5)
})
+
```
+
+\newpage
\pagebreak
# Weekly Chlorophyll Index Difference Map
-```{r render_ci_difference_map, echo=FALSE, fig.height=6.9, fig.width=9, message=FALSE, warning=FALSE}
+```{r render_ci_difference_map, echo=FALSE, fig.height=7, fig.width=10, message=FALSE, warning=FALSE}
# Create chlorophyll index difference map
tryCatch({ # Base shape
map <- tmap::tm_shape(last_week_dif_raster_abs, unit = "m") # Add raster layer with continuous spectrum (centered at 0 for difference maps, fixed scale)
map <- map + tmap::tm_raster(col.scale = tm_scale_continuous(values = "brewer.rd_yl_gn",
midpoint = 0,
- limits = c(-3, 3)),
- col.legend = tm_legend(title = "Chlorophyll Index (CI) Change",
- orientation = "landscape",
+ limits = c(-3, 3)), col.legend = tm_legend(title = "Chlorophyll Index (CI) Change",
+ orientation = "landscape",
position = tm_pos_out("center", "bottom")))
-
- # Complete the map with layout and other elements
+ # Complete the map with layout and other elements
map <- map +
- tmap::tm_scalebar(position = c("right", "bottom"), text.color = "black") +
- tmap::tm_compass(position = c("right", "bottom"), text.color = "black") +
- tmap::tm_shape(AllPivots0) +
+ tmap::tm_scalebar(position = tm_pos_out("right", "bottom"), text.color = "black") +
+ tmap::tm_compass(position = tm_pos_out("right", "bottom"), text.color = "black") +
+ tmap::tm_shape(AllPivots0) +
tmap::tm_borders(col = "black") +
tmap::tm_text("sub_field", size = 0.6, col = "black")
-
+
# Print the map
print(map)
}, error = function(e) {
@@ -471,22 +496,23 @@ tryCatch({ # Base shape
text(1, 1, "Error creating CI difference map", cex=1.5)
})
```
+
+\newpage
\pagebreak
-
-```{r generate_field_visualizations, eval=TRUE, fig.height=3.8, fig.width=10, message=FALSE,echo=FALSE, warning=FALSE, include=TRUE, results='asis'}
+```{r generate_field_visualizations, eval=TRUE, fig.height=4.5, fig.width=12, message=FALSE,echo=FALSE, warning=FALSE, include=TRUE, results='asis'}
# Generate detailed visualizations for each field
tryCatch({
# Merge field polygons for processing
- AllPivots_merged <- AllPivots0 %>%
- dplyr::group_by(field) %>%
+ AllPivots_merged <- AllPivots0 %>%
+ dplyr::group_by(field) %>%
dplyr::summarise(.groups = 'drop')
-
+
# Generate plots for each field
- purrr::walk(AllPivots_merged$field[1:5], function(field_name) {
+ purrr::walk(AllPivots_merged$field, function(field_name) {
tryCatch({
cat("\n") # Add an empty line for better spacing
-
+
# Call ci_plot with explicit parameters
ci_plot(
pivotName = field_name,
@@ -502,9 +528,9 @@ tryCatch({
week_minus_3 = week_minus_3,
borders = borders
)
-
- cat("\n")
-
+
+ # cat("\n")
+
# Call cum_ci_plot with explicit parameters
cum_ci_plot(
pivotName = field_name,
@@ -512,7 +538,7 @@ tryCatch({
plot_type = "value",
facet_on = FALSE
)
-
+
}, error = function(e) {
safe_log(paste("Error generating plots for field", field_name, ":", e$message), "ERROR")
cat(paste("## Error generating plots for field", field_name, "\n"))
@@ -529,17 +555,17 @@ tryCatch({
# Alternative visualization grouped by sub-area (disabled by default)
tryCatch({
# Group pivots by sub-area
- pivots_grouped <- AllPivots0
-
+ pivots_grouped <- AllPivots0
+
# Iterate over each subgroup
for (subgroup in unique(pivots_grouped$sub_area)) {
# Add subgroup heading
cat("\n")
cat("## Subgroup: ", subgroup, "\n")
-
+
# Filter data for current subgroup
subset_data <- dplyr::filter(pivots_grouped, sub_area == subgroup)
-
+
# Generate visualizations for each field in the subgroup
purrr::walk(subset_data$field, function(field_name) {
cat("\n")
@@ -548,9 +574,9 @@ tryCatch({
cum_ci_plot(field_name)
cat("\n")
})
-
+
# Add page break after each subgroup
- cat("\\pagebreak\n")
+ cat("\\newpage\n")
}
}, error = function(e) {
safe_log(paste("Error in subarea visualization section:", e$message), "ERROR")
@@ -569,39 +595,39 @@ tryCatch({
dplyr::group_by(model) %>%
tidyr::fill(field, sub_field, .direction = "downup") %>%
dplyr::ungroup()
-
+
# Check if tonnage_ha is empty
if (all(is.na(harvesting_data$tonnage_ha))) {
safe_log("Lacking historic harvest data, please provide for yield prediction calculation", "WARNING")
knitr::knit_exit() # Exit the chunk if tonnage_ha is empty
}
-
+
# Rename year column to season for consistency
harvesting_data <- harvesting_data %>% dplyr::rename(season = year)
-
+
# Join CI and yield data
CI_and_yield <- dplyr::left_join(CI_quadrant, harvesting_data, by = c("field", "sub_field", "season")) %>%
- dplyr::group_by(sub_field, season) %>%
+ dplyr::group_by(sub_field, season) %>%
dplyr::slice(which.max(DOY)) %>%
dplyr::select(field, sub_field, tonnage_ha, cumulative_CI, DOY, season, sub_area) %>%
dplyr::mutate(CI_per_day = cumulative_CI / DOY)
-
+
# Define predictors and response variables
predictors <- c("cumulative_CI", "DOY", "CI_per_day")
response <- "tonnage_ha"
-
+
# Prepare test and validation datasets
- CI_and_yield_test <- CI_and_yield %>%
- as.data.frame() %>%
+ CI_and_yield_test <- CI_and_yield %>%
+ as.data.frame() %>%
dplyr::filter(!is.na(tonnage_ha))
-
+
CI_and_yield_validation <- CI_and_yield_test
-
+
# Prepare prediction dataset (fields without harvest data)
- prediction_yields <- CI_and_yield %>%
- as.data.frame() %>%
+ prediction_yields <- CI_and_yield %>%
+ as.data.frame() %>%
dplyr::filter(is.na(tonnage_ha))
-
+
# Configure model training parameters
ctrl <- caret::trainControl(
method = "cv",
@@ -610,7 +636,7 @@ tryCatch({
number = 5,
verboseIter = TRUE
)
-
+
# Train the model with feature selection
set.seed(202) # For reproducibility
model_ffs_rf <- CAST::ffs(
@@ -623,7 +649,7 @@ tryCatch({
tuneLength = 5,
na.rm = TRUE
)
-
+
# Function to prepare predictions with consistent naming and formatting
prepare_predictions <- function(predictions, newdata) {
return(predictions %>%
@@ -641,17 +667,17 @@ tryCatch({
dplyr::left_join(., newdata, by = c("field", "sub_field", "season"))
)
}
-
+
# Predict yields for the validation dataset
pred_ffs_rf <- prepare_predictions(stats::predict(model_ffs_rf, newdata = CI_and_yield_validation), CI_and_yield_validation)
-
+
# Predict yields for the current season (focus on mature fields over 300 days)
pred_rf_current_season <- prepare_predictions(stats::predict(model_ffs_rf, newdata = prediction_yields), prediction_yields) %>%
dplyr::filter(Age_days > 1) %>%
dplyr::mutate(CI_per_day = round(total_CI / Age_days, 1))
-
+
safe_log("Successfully completed yield prediction calculations")
-
+
}, error = function(e) {
safe_log(paste("Error in yield prediction:", e$message), "ERROR")
# Create empty dataframes to prevent errors in subsequent chunks
@@ -671,23 +697,23 @@ tryCatch({
ggplot2::scale_x_continuous(limits = c(0, 200)) +
ggplot2::scale_y_continuous(limits = c(0, 200)) +
ggplot2::labs(title = "Model Performance: \nPredicted vs Actual Tonnage/ha",
- x = "Actual tonnage/ha (Tcha)",
+ x = "Actual tonnage/ha (Tcha)",
y = "Predicted tonnage/ha (Tcha)") +
ggplot2::theme_minimal()
}
-
+
if (nrow(pred_rf_current_season) > 0) {
# Plot predicted yields by age
ggplot2::ggplot(pred_rf_current_season, ggplot2::aes(x = Age_days, y = predicted_Tcha)) +
ggplot2::geom_point(size = 2, alpha = 0.6) +
ggplot2::labs(title = "Predicted Yields for Fields Over 300 Days \nOld Yet to Be Harvested",
- x = "Age (days)",
+ x = "Age (days)",
y = "Predicted tonnage/ha (Tcha)") +
ggplot2::scale_y_continuous(limits = c(0, 200)) +
ggplot2::theme_minimal()
-
+
# Display prediction table
- knitr::kable(pred_rf_current_season,
+ knitr::kable(pred_rf_current_season,
digits = 0,
caption = "Predicted Tonnage/ha for Fields Over 300 Days Old")
} else {
@@ -699,7 +725,3 @@ tryCatch({
})
```
-
-
-\pagebreak
-
diff --git a/r_app/extract_current_versions.R b/r_app/extract_current_versions.R
new file mode 100644
index 0000000..f98cea2
--- /dev/null
+++ b/r_app/extract_current_versions.R
@@ -0,0 +1,200 @@
+#' Version Extractor for SmartCane Project
+#'
+#' This script scans your R scripts to find all used packages and extracts
+#' the currently installed versions. Use this to populate the package_manager.R
+#' with your actual working versions.
+#'
+#' Usage:
+#' source("extract_current_versions.R")
+#'
+#' Author: SmartCane Team
+#' Date: 2025-06-24
+
+# =============================================================================
+# PACKAGE DISCOVERY
+# =============================================================================
+
+#' Extract packages from R scripts
+extract_packages_from_scripts <- function(script_dir = ".") {
+ # Find all R files
+ r_files <- list.files(script_dir, pattern = "\\.(R|Rmd)$", recursive = TRUE, full.names = TRUE)
+
+ packages <- c()
+
+ for (file in r_files) {
+ cat("Scanning:", file, "\n")
+
+ tryCatch({
+ content <- readLines(file, warn = FALSE)
+
+ # Find library() calls
+ library_matches <- regmatches(content, regexpr('library\\(["\']?([^"\'\\)]+)["\']?\\)', content))
+ library_packages <- gsub('library\\(["\']?([^"\'\\)]+)["\']?\\)', '\\1', library_matches)
+ library_packages <- library_packages[library_packages != ""]
+
+ # Find require() calls
+ require_matches <- regmatches(content, regexpr('require\\(["\']?([^"\'\\)]+)["\']?\\)', content))
+ require_packages <- gsub('require\\(["\']?([^"\'\\)]+)["\']?\\)', '\\1', require_matches)
+ require_packages <- require_packages[require_packages != ""]
+
+ # Find package::function calls
+ namespace_matches <- regmatches(content, gregexpr('[a-zA-Z][a-zA-Z0-9.]*::', content))
+ namespace_packages <- unique(unlist(lapply(namespace_matches, function(x) gsub('::', '', x))))
+ namespace_packages <- namespace_packages[namespace_packages != ""]
+
+ packages <- c(packages, library_packages, require_packages, namespace_packages)
+
+ }, error = function(e) {
+ cat("Error reading", file, ":", e$message, "\n")
+ })
+ }
+
+ # Clean and deduplicate
+ packages <- unique(packages)
+ packages <- packages[!packages %in% c("", "base", "stats", "utils", "graphics", "grDevices")]
+
+ return(sort(packages))
+}
+
+#' Get current version of installed packages
+get_current_versions <- function(packages) {
+ versions <- list()
+
+ cat("\nChecking installed versions...\n")
+ cat("===============================\n")
+
+ for (pkg in packages) {
+ if (pkg %in% rownames(installed.packages())) {
+ version <- as.character(packageVersion(pkg))
+ versions[[pkg]] <- version
+ cat(sprintf("✓ %-20s %s\n", pkg, version))
+ } else {
+ cat(sprintf("✗ %-20s NOT INSTALLED\n", pkg))
+ }
+ }
+
+ return(versions)
+}
+
+#' Generate package manager configuration
+generate_package_config <- function(versions) {
+ cat("\n\nGenerating REQUIRED_PACKAGES configuration...\n")
+ cat("=============================================\n\n")
+
+ config_lines <- c(
+ "# Package requirements with your current working versions",
+ "REQUIRED_PACKAGES <- list("
+ )
+
+ # Group packages by category
+ categories <- list(
+ "Core data manipulation" = c("here", "dplyr", "tidyr", "readr", "readxl", "magrittr", "lubridate", "stringr"),
+ "Spatial data" = c("sf", "terra", "exactextractr", "raster", "sp", "sf", "rgdal", "rgeos"),
+ "Visualization" = c("tmap", "ggplot2", "RColorBrewer", "viridis", "scales"),
+ "Statistical analysis" = c("lme4", "nlme", "mgcv", "survival", "cluster"),
+ "Reporting" = c("knitr", "rmarkdown", "officedown", "officer", "flextable"),
+ "Tidyverse" = c("tidyverse", "purrr", "forcats", "tibble"),
+ "Other packages" = c()
+ )
+
+ # Categorize packages
+ categorized <- list()
+ uncategorized <- names(versions)
+
+ for (category in names(categories)) {
+ cat_packages <- intersect(names(versions), categories[[category]])
+ if (length(cat_packages) > 0) {
+ categorized[[category]] <- cat_packages
+ uncategorized <- setdiff(uncategorized, cat_packages)
+ }
+ }
+
+ # Add uncategorized packages
+ if (length(uncategorized) > 0) {
+ categorized[["Other packages"]] <- uncategorized
+ }
+
+ # Generate config
+ for (category in names(categorized)) {
+ config_lines <- c(config_lines, paste0(" # ", category))
+
+ packages_in_cat <- categorized[[category]]
+ for (i in seq_along(packages_in_cat)) {
+ pkg <- packages_in_cat[i]
+ version <- versions[[pkg]]
+ comma <- if (i == length(packages_in_cat) && category == names(categorized)[length(categorized)]) "" else ","
+
+ # Add special comment for critical packages
+ comment <- ""
+ if (pkg == "tmap") comment <- " # CRITICAL: for tm_scale_continuous() syntax"
+ if (pkg == "terra") comment <- " # CRITICAL: for raster processing"
+
+ config_lines <- c(config_lines, sprintf(' "%s" = "%s"%s%s', pkg, version, comma, comment))
+ }
+
+ if (category != names(categorized)[length(categorized)]) {
+ config_lines <- c(config_lines, "")
+ }
+ }
+
+ config_lines <- c(config_lines, ")")
+
+ # Print to console
+ cat(paste(config_lines, collapse = "\n"))
+
+ # Save to file
+ writeLines(config_lines, "generated_package_config.R")
+ cat("\n\n📁 Configuration saved to: generated_package_config.R\n")
+
+ return(config_lines)
+}
+
+# =============================================================================
+# MAIN EXECUTION
+# =============================================================================
+
+main <- function() {
+ cat("🔍 SmartCane Package Version Extractor\n")
+ cat("======================================\n\n")
+
+ # Step 1: Find all packages used in scripts
+ cat("Step 1: Scanning R scripts for package usage...\n")
+ packages <- extract_packages_from_scripts()
+
+ cat("\nFound packages:\n")
+ cat(paste(packages, collapse = ", "), "\n")
+ cat("\nTotal packages found:", length(packages), "\n")
+
+ # Step 2: Get current versions
+ cat("\nStep 2: Checking installed versions...\n")
+ versions <- get_current_versions(packages)
+
+ installed_count <- length(versions)
+ missing_count <- length(packages) - installed_count
+
+ cat(sprintf("\n📊 Summary: %d installed, %d missing\n", installed_count, missing_count))
+
+ if (missing_count > 0) {
+ missing_packages <- setdiff(packages, names(versions))
+ cat("\n⚠️ Missing packages:\n")
+ cat(paste(missing_packages, collapse = ", "), "\n")
+ cat("\nYou may want to install these first, then re-run this script.\n")
+ }
+
+ # Step 3: Generate configuration
+ if (length(versions) > 0) {
+ cat("\nStep 3: Generating package manager configuration...\n")
+ config <- generate_package_config(versions)
+
+ cat("\n✅ Next steps:\n")
+ cat("1. Review generated_package_config.R\n")
+ cat("2. Copy the REQUIRED_PACKAGES list to package_manager.R\n")
+ cat("3. Adjust any versions as needed\n")
+ cat("4. Run package_manager.R\n")
+ } else {
+ cat("\n❌ No installed packages found. Install packages first.\n")
+ }
+}
+
+# Run the extraction
+main()
diff --git a/r_app/package_manager.R b/r_app/package_manager.R
new file mode 100644
index 0000000..84d021d
--- /dev/null
+++ b/r_app/package_manager.R
@@ -0,0 +1,315 @@
+#' Package Manager for SmartCane Project
+#'
+#' This script manages R package versions across development, testing, and production environments.
+#' It uses renv for reproducible environments and ensures consistent package versions.
+#'
+#' Usage:
+#' source("package_manager.R")
+#'
+#' Author: SmartCane Team
+#' Date: 2025-06-24
+
+# =============================================================================
+# CONFIGURATION
+# =============================================================================
+
+# Package requirements with your current working versions
+REQUIRED_PACKAGES <- list(
+ # Core data manipulation
+ "dplyr" = "1.1.4",
+ "here" = "1.0.1",
+ "lubridate" = "1.9.4",
+ "readr" = "2.1.5",
+ "readxl" = "1.4.5",
+ "stringr" = "1.5.1",
+ "tidyr" = "1.3.1",
+ "purrr" = "1.0.2",
+ "magrittr" = "2.0.0", # Adding this as it's commonly used
+
+ # Spatial data
+ "exactextractr" = "0.10.0",
+ "raster" = "3.6.32",
+ "sf" = "1.0.19",
+ "terra" = "1.8.43", # CRITICAL: for raster processing
+
+ # Visualization - CRITICAL: tmap v4 for new syntax
+ "ggplot2" = "3.5.1",
+ "tmap" = "4.0", # CRITICAL: for tm_scale_continuous() syntax
+ "gridExtra" = "2.3",
+ # Reporting
+ "knitr" = "1.50",
+ "rmarkdown" = "2.21.0", # Adding this as it's needed for reports
+
+ # Tidyverse meta-package
+ "tidyverse" = "2.0.0",
+
+ # Machine Learning & Statistics
+ "caret" = "7.0.1",
+ "CAST" = "1.0.3",
+ "randomForest" = "4.7.1.2",
+ "rsample" = "1.3.0",
+
+ # Parallel processing
+ "furrr" = "0.3.1",
+ "future" = "1.40.0",
+ "progressr" = "0.15.1",
+
+ # Other utilities
+ "reshape2" = "1.4.4",
+ "zoo" = "1.8.13"
+)
+
+# Log file setup
+LOG_FILE <- file.path(getwd(), "package_manager.log")
+START_TIME <- Sys.time()
+
+# =============================================================================
+# UTILITY FUNCTIONS
+# =============================================================================
+
+#' Log message to both console and file
+log_message <- function(message, level = "INFO") {
+ timestamp <- format(Sys.time(), "%Y-%m-%d %H:%M:%S")
+ formatted_msg <- sprintf("[%s] %s - %s", level, timestamp, message)
+
+ # Print to console
+ cat(formatted_msg, "\n")
+
+ # Write to log file
+ cat(formatted_msg, "\n", file = LOG_FILE, append = TRUE)
+}
+
+#' Check if package is installed
+is_package_installed <- function(package) {
+ package %in% rownames(installed.packages())
+}
+
+#' Get installed package version
+get_package_version <- function(package) {
+ if (is_package_installed(package)) {
+ as.character(packageVersion(package))
+ } else {
+ NULL
+ }
+}
+
+#' Compare version strings (returns TRUE if installed >= required)
+version_meets_requirement <- function(installed, required) {
+ if (is.null(installed)) return(FALSE)
+ utils::compareVersion(installed, required) >= 0
+}
+
+#' Install or update package to minimum version
+install_or_update_package <- function(package, required_version) {
+ current_version <- get_package_version(package)
+
+ if (is.null(current_version)) {
+ log_message(sprintf("Installing %s (required: >= %s)", package, required_version))
+ tryCatch({
+ install.packages(package, dependencies = TRUE, quiet = TRUE)
+ new_version <- get_package_version(package)
+ log_message(sprintf("✓ Installed %s version %s", package, new_version), "SUCCESS")
+ return(TRUE)
+ }, error = function(e) {
+ log_message(sprintf("✗ Failed to install %s: %s", package, e$message), "ERROR")
+ return(FALSE)
+ })
+ } else if (!version_meets_requirement(current_version, required_version)) {
+ log_message(sprintf("Updating %s from %s to >= %s", package, current_version, required_version))
+ tryCatch({
+ install.packages(package, dependencies = TRUE, quiet = TRUE)
+ new_version <- get_package_version(package)
+ if (version_meets_requirement(new_version, required_version)) {
+ log_message(sprintf("✓ Updated %s to version %s", package, new_version), "SUCCESS")
+ return(TRUE)
+ } else {
+ log_message(sprintf("⚠ %s updated to %s but still below required %s", package, new_version, required_version), "WARNING")
+ return(FALSE)
+ }
+ }, error = function(e) {
+ log_message(sprintf("✗ Failed to update %s: %s", package, e$message), "ERROR")
+ return(FALSE)
+ })
+ } else {
+ log_message(sprintf("✓ %s version %s meets requirement (>= %s)", package, current_version, required_version))
+ return(TRUE)
+ }
+}
+
+# =============================================================================
+# MAIN PACKAGE MANAGEMENT FUNCTIONS
+# =============================================================================
+
+#' Initialize renv if not already initialized
+initialize_renv <- function() {
+ log_message("Checking renv initialization...")
+
+ if (!file.exists("renv.lock")) {
+ log_message("Initializing renv for the first time...")
+ if (!requireNamespace("renv", quietly = TRUE)) {
+ log_message("Installing renv...")
+ install.packages("renv")
+ }
+ renv::init()
+ log_message("✓ renv initialized", "SUCCESS")
+ } else {
+ log_message("✓ renv already initialized")
+ # Check if renv is already active by looking at the library path
+ if (!requireNamespace("renv", quietly = TRUE)) {
+ install.packages("renv")
+ }
+ # Check if we're already using the renv project library
+ lib_paths <- .libPaths()
+
+ if (!any(grepl("renv", lib_paths))) {
+ log_message("Activating renv...")
+ renv::activate()
+ log_message("✓ renv activated")
+ } else {
+ log_message("✓ renv already active")
+ }
+ }
+}
+
+#' Check and install all required packages
+manage_packages <- function() {
+ log_message("=== PACKAGE MANAGEMENT STARTED ===")
+ log_message(sprintf("R version: %s", R.version.string))
+
+ success_count <- 0
+ failure_count <- 0
+
+ for (package in names(REQUIRED_PACKAGES)) {
+ required_version <- REQUIRED_PACKAGES[[package]]
+
+ if (install_or_update_package(package, required_version)) {
+ success_count <- success_count + 1
+ } else {
+ failure_count <- failure_count + 1
+ }
+ }
+
+ log_message(sprintf("Package management complete: %d success, %d failures", success_count, failure_count))
+
+ if (failure_count > 0) {
+ log_message("Some packages failed to install/update. Check log for details.", "WARNING")
+ }
+
+ return(failure_count == 0)
+}
+
+#' Update renv lockfile with current package versions
+update_lockfile <- function() {
+ log_message("Updating renv lockfile...")
+ tryCatch({
+ renv::snapshot(prompt = FALSE)
+ log_message("✓ renv lockfile updated", "SUCCESS")
+ }, error = function(e) {
+ log_message(sprintf("✗ Failed to update lockfile: %s", e$message), "ERROR")
+ })
+}
+
+#' Generate package report
+generate_package_report <- function() {
+ log_message("=== PACKAGE REPORT ===")
+
+ # Check each required package
+ for (package in names(REQUIRED_PACKAGES)) {
+ required_version <- REQUIRED_PACKAGES[[package]]
+ current_version <- get_package_version(package)
+
+ if (is.null(current_version)) {
+ status <- "❌ NOT INSTALLED"
+ } else if (version_meets_requirement(current_version, required_version)) {
+ status <- "✅ OK"
+ } else {
+ status <- "⚠️ VERSION TOO OLD"
+ }
+
+ log_message(sprintf("%-20s | Required: >= %-8s | Installed: %-8s | %s",
+ package, required_version,
+ ifelse(is.null(current_version), "NONE", current_version),
+ status))
+ }
+
+ log_message("=== END PACKAGE REPORT ===")
+}
+
+#' Main function to run complete package management
+run_package_manager <- function() {
+ # Initialize log
+ cat("", file = LOG_FILE) # Clear log file
+ log_message("SmartCane Project - Package Manager Started")
+ log_message(sprintf("Working directory: %s", getwd()))
+
+ # Step 1: Initialize renv
+ initialize_renv()
+
+ # Step 2: Generate initial report
+ log_message("\n=== INITIAL STATE ===")
+ generate_package_report()
+
+ # Step 3: Manage packages
+ log_message("\n=== PACKAGE INSTALLATION/UPDATES ===")
+ success <- manage_packages()
+
+ # Step 4: Update lockfile if successful
+ if (success) {
+ update_lockfile()
+ }
+
+ # Step 5: Generate final report
+ log_message("\n=== FINAL STATE ===")
+ generate_package_report()
+
+ # Summary
+ end_time <- Sys.time()
+ duration <- round(as.numeric(difftime(end_time, START_TIME, units = "secs")), 2)
+
+ log_message(sprintf("Package management completed in %s seconds", duration))
+ log_message(sprintf("Log saved to: %s", LOG_FILE))
+
+ if (success) {
+ log_message("🎉 All packages successfully managed!", "SUCCESS")
+ log_message("📋 Next steps:")
+ log_message(" 1. Test your R scripts to ensure everything works")
+ log_message(" 2. Commit renv.lock to version control")
+ log_message(" 3. Share this script with your team")
+ } else {
+ log_message("⚠️ Some issues occurred. Check the log for details.", "WARNING")
+ log_message("💡 You may need to:")
+ log_message(" 1. Update R to a newer version")
+ log_message(" 2. Install system dependencies")
+ log_message(" 3. Check your internet connection")
+ }
+
+ return(success)
+}
+
+# =============================================================================
+# EXECUTION
+# =============================================================================
+
+# Only run if script is sourced directly (not when loaded as module)
+if (!exists("PACKAGE_MANAGER_LOADED")) {
+ PACKAGE_MANAGER_LOADED <- TRUE
+
+ cat("🚀 SmartCane Package Manager\n")
+ cat("============================\n")
+ cat("This will check and install/update all required R packages.\n")
+ cat("Log file:", LOG_FILE, "\n\n")
+
+ # Ask for confirmation
+ response <- readline("Continue? (y/N): ")
+ if (tolower(substr(response, 1, 1)) == "y") {
+ result <- run_package_manager()
+
+ if (result) {
+ cat("\n✅ Package management completed successfully!\n")
+ } else {
+ cat("\n❌ Package management completed with errors. Check the log.\n")
+ }
+ } else {
+ cat("❌ Package management cancelled.\n")
+ }
+}
diff --git a/r_app/report_utils.R b/r_app/report_utils.R
index 930ec3c..060a6e6 100644
--- a/r_app/report_utils.R
+++ b/r_app/report_utils.R
@@ -73,15 +73,15 @@ create_CI_map <- function(pivot_raster, pivot_shape, pivot_spans, show_legend =
}
if (missing(age) || is.null(age)) {
stop("age parameter is required")
- }
- # Create the base map
+ } # Create the base map
map <- tm_shape(pivot_raster, unit = "m") # Add raster with continuous spectrum (fixed scale 1-8 for consistent comparison)
map <- map + tm_raster(col.scale = tm_scale_continuous(values = "brewer.rd_yl_gn",
limits = c(1, 8)),
col.legend = tm_legend(title = "CI",
- orientation = if(legend_is_portrait) "portrait" else "landscape",
+ orientation = if(legend_is_portrait) "portrait" else "landscape",
show = show_legend,
- position = c("left", "bottom")))
+ position = if(show_legend) tm_pos_out("left", "center") else c("left", "bottom")
+ ))
# Add layout elements
map <- map + tm_layout(main.title = paste0("Max CI week ", week,"\n", age, " weeks old"),
main.title.size = 0.7)
@@ -128,16 +128,16 @@ create_CI_diff_map <- function(pivot_raster, pivot_shape, pivot_spans, show_lege
}
if (missing(age) || is.null(age)) {
stop("age parameter is required")
- }
- # Create the base map
+ } # Create the base map
map <- tm_shape(pivot_raster, unit = "m") # Add raster with continuous spectrum (centered at 0 for difference maps, fixed scale)
map <- map + tm_raster(col.scale = tm_scale_continuous(values = "brewer.rd_yl_gn",
midpoint = 0,
limits = c(-3, 3)),
- col.legend = tm_legend(title = "CI difference",
+ col.legend = tm_legend(title = "CI diff.",
orientation = if(legend_is_portrait) "portrait" else "landscape",
show = show_legend,
- position = c("left", "bottom")))
+ position = if(show_legend) tm_pos_out("right", "center") else c("left", "bottom")
+ ))
# Add layout elements
map <- map + tm_layout(main.title = paste0("CI change week ", week_1, " - week ", week_2, "\n", age, " weeks old"),
main.title.size = 0.7)
@@ -159,7 +159,7 @@ create_CI_diff_map <- function(pivot_raster, pivot_shape, pivot_spans, show_lege
#'
#' @param pivotName The name or ID of the pivot field to visualize
#' @param field_boundaries Field boundaries spatial data (sf object)
-#' @param current_ci Current week's Chlorophyll Index raster
+#' @param current_ci Current week's Chlorophyll Index raster
#' @param ci_minus_1 Previous week's Chlorophyll Index raster
#' @param ci_minus_2 Two weeks ago Chlorophyll Index raster
#' @param last_week_diff Difference raster between current and last week
@@ -172,13 +172,13 @@ create_CI_diff_map <- function(pivot_raster, pivot_shape, pivot_spans, show_lege
#' @param borders Whether to display field borders (default: TRUE)
#' @return NULL (adds output directly to R Markdown document)
#'
-ci_plot <- function(pivotName,
- field_boundaries = AllPivots0,
- current_ci = CI,
- ci_minus_1 = CI_m1,
- ci_minus_2 = CI_m2,
- last_week_diff = last_week_dif_raster_abs,
- three_week_diff = three_week_dif_raster_abs,
+ci_plot <- function(pivotName,
+ field_boundaries = AllPivots0,
+ current_ci = CI,
+ ci_minus_1 = CI_m1,
+ ci_minus_2 = CI_m2,
+ last_week_diff = last_week_dif_raster_abs,
+ three_week_diff = three_week_dif_raster_abs,
harvesting_data = harvesting_data,
week = week,
week_minus_1 = week_minus_1,
@@ -214,66 +214,66 @@ ci_plot <- function(pivotName,
# Extract pivot shape and age data
tryCatch({
pivotShape <- field_boundaries %>% terra::subset(field %in% pivotName) %>% sf::st_transform(terra::crs(current_ci))
- age <- harvesting_data %>%
- dplyr::filter(field %in% pivotName) %>%
- sort("year") %>%
- tail(., 1) %>%
- dplyr::select(age) %>%
- unique() %>%
- pull() %>%
+ age <- harvesting_data %>%
+ dplyr::filter(field %in% pivotName) %>%
+ sort("year") %>%
+ tail(., 1) %>%
+ dplyr::select(age) %>%
+ unique() %>%
+ pull() %>%
round()
-
+
# Filter for the specific pivot
AllPivots2 <- field_boundaries %>% dplyr::filter(field %in% pivotName)
-
+
# Create crop masks for different timepoints using terra functions
singlePivot <- terra::crop(current_ci, pivotShape) %>% terra::mask(., pivotShape)
singlePivot_m1 <- terra::crop(ci_minus_1, pivotShape) %>% terra::mask(., pivotShape)
singlePivot_m2 <- terra::crop(ci_minus_2, pivotShape) %>% terra::mask(., pivotShape)
-
+
# Create difference maps
abs_CI_last_week <- terra::crop(last_week_diff, pivotShape) %>% terra::mask(., pivotShape)
abs_CI_three_week <- terra::crop(three_week_diff, pivotShape) %>% terra::mask(., pivotShape)
-
+
# Get planting date
- planting_date <- harvesting_data %>%
- dplyr::filter(field %in% pivotName) %>%
- ungroup() %>%
- dplyr::select(season_start) %>%
+ planting_date <- harvesting_data %>%
+ dplyr::filter(field %in% pivotName) %>%
+ ungroup() %>%
+ dplyr::select(season_start) %>%
unique()
-
+
# Create spans for borders
- joined_spans2 <- field_boundaries %>%
+ joined_spans2 <- field_boundaries %>%
sf::st_transform(sf::st_crs(pivotShape)) %>% dplyr::filter(field %in% pivotName)
-
+
# Create the maps for different timepoints
- CImap_m2 <- create_CI_map(singlePivot_m2, AllPivots2, joined_spans2,
- show_legend = TRUE, legend_is_portrait = TRUE,
+ CImap_m2 <- create_CI_map(singlePivot_m2, AllPivots2, joined_spans2,
+ show_legend = TRUE, legend_is_portrait = TRUE,
week = week_minus_2, age = age - 2, borders = borders)
-
- CImap_m1 <- create_CI_map(singlePivot_m1, AllPivots2, joined_spans2,
- show_legend = FALSE, legend_is_portrait = FALSE,
+
+ CImap_m1 <- create_CI_map(singlePivot_m1, AllPivots2, joined_spans2,
+ show_legend = FALSE, legend_is_portrait = FALSE,
week = week_minus_1, age = age - 1, borders = borders)
-
- CImap <- create_CI_map(singlePivot, AllPivots2, joined_spans2,
- show_legend = FALSE, legend_is_portrait = FALSE,
+
+ CImap <- create_CI_map(singlePivot, AllPivots2, joined_spans2,
+ show_legend = FALSE, legend_is_portrait = FALSE,
week = week, age = age, borders = borders)
# Create difference maps - only show legend on the second one to avoid redundancy
- CI_max_abs_last_week <- create_CI_diff_map(abs_CI_last_week, AllPivots2, joined_spans2,
- show_legend = FALSE, legend_is_portrait = FALSE,
+ CI_max_abs_last_week <- create_CI_diff_map(abs_CI_last_week, AllPivots2, joined_spans2,
+ show_legend = FALSE, legend_is_portrait = FALSE,
week_1 = week, week_2 = week_minus_1, age = age, borders = borders)
-
- CI_max_abs_three_week <- create_CI_diff_map(abs_CI_three_week, AllPivots2, joined_spans2,
- show_legend = TRUE, legend_is_portrait = TRUE,
+
+ CI_max_abs_three_week <- create_CI_diff_map(abs_CI_three_week, AllPivots2, joined_spans2,
+ show_legend = TRUE, legend_is_portrait = TRUE,
week_1 = week, week_2 = week_minus_3, age = age, borders = borders)
-
- # Arrange the maps
- tst <- tmap_arrange(CImap_m2, CImap_m1, CImap, CI_max_abs_last_week, CI_max_abs_three_week, nrow = 1)
-
+ # Arrange the maps with equal widths
+ tst <- tmap_arrange(CImap_m2, CImap_m1, CImap, CI_max_abs_last_week, CI_max_abs_three_week,
+ nrow = 1, widths = c(0.23, 0.18, 0.18, 0.18, 0.23))
+
# Output heading and map to R Markdown
cat(paste("## Field", pivotName, "-", age, "weeks after planting/harvest", "\n"))
print(tst)
-
+
}, error = function(e) {
safe_log(paste("Error creating CI plot for pivot", pivotName, ":", e$message), "ERROR")
cat(paste("## Field", pivotName, "- Error creating visualization", "\n"))
@@ -308,54 +308,54 @@ cum_ci_plot <- function(pivotName, ci_quadrant_data = CI_quadrant, plot_type = "
# Filter data for the specified pivot
tryCatch({
data_ci <- ci_quadrant_data %>% dplyr::filter(field == pivotName)
-
+
if (nrow(data_ci) == 0) {
safe_log(paste("No CI data found for pivot", pivotName), "WARNING")
return(cum_ci_plot2(pivotName)) # Use fallback function when no data is available
}
-
+
# Process data
- data_ci2 <- data_ci %>%
+ data_ci2 <- data_ci %>%
dplyr::mutate(CI_rate = cumulative_CI / DOY,
- week = lubridate::week(Date)) %>%
+ week = lubridate::week(Date)) %>%
dplyr::group_by(field) %>%
dplyr::mutate(mean_CIrate_rolling_10_days = zoo::rollapplyr(CI_rate, width = 10, FUN = mean, partial = TRUE),
mean_rolling_10_days = zoo::rollapplyr(value, width = 10, FUN = mean, partial = TRUE))
-
+
data_ci2 <- data_ci2 %>% dplyr::mutate(season = as.factor(season))
-
+
# Prepare date information by season
- date_preparation_perfect_pivot <- data_ci2 %>%
- dplyr::group_by(season) %>%
+ date_preparation_perfect_pivot <- data_ci2 %>%
+ dplyr::group_by(season) %>%
dplyr::summarise(min_date = min(Date),
max_date = max(Date),
days = max_date - min_date)
-
+
# Get the 3 most recent seasons
unique_seasons <- sort(unique(date_preparation_perfect_pivot$season), decreasing = TRUE)[1:3]
-
+
# Determine the y aesthetic based on the plot type
y_aesthetic <- switch(plot_type,
"CI_rate" = "mean_CIrate_rolling_10_days",
"cumulative_CI" = "cumulative_CI",
"value" = "mean_rolling_10_days")
-
+
y_label <- switch(plot_type,
"CI_rate" = "10-Day Rolling Mean CI Rate (cumulative CI / age)",
"cumulative_CI" = "Cumulative CI",
"value" = "10-Day Rolling Mean CI")
-
+
# Determine x-axis variable based on x_unit parameter
x_var <- if (x_unit == "days") {
if (facet_on) "Date" else "DOY"
} else {
"week"
}
-
+
x_label <- switch(x_unit,
"days" = if (facet_on) "Date" else "Age of Crop (Days)",
"weeks" = "Week Number")
-
+
# Create plot with either facets by season or overlay by DOY/week
if (facet_on) {
g <- ggplot2::ggplot(data = data_ci2 %>% dplyr::filter(season %in% unique_seasons)) +
@@ -386,10 +386,10 @@ cum_ci_plot <- function(pivotName, ci_quadrant_data = CI_quadrant, plot_type = "
legend.text = ggplot2::element_text(size = 8)) +
ggplot2::guides(color = ggplot2::guide_legend(nrow = 2, byrow = TRUE))
}
-
+
# Output plot to R Markdown with reduced height
subchunkify(g, 3.2, 10) # Reduced from 3.2 to 2.8
-
+
}, error = function(e) {
safe_log(paste("Error creating CI trend plot for pivot", pivotName, ":", e$message), "ERROR")
cum_ci_plot2(pivotName) # Use fallback function in case of error
@@ -406,14 +406,14 @@ cum_ci_plot2 <- function(pivotName){
if (missing(pivotName) || is.null(pivotName) || pivotName == "") {
stop("pivotName is required")
}
-
+
# Create a simple plot showing "No data available"
tryCatch({
end_date <- Sys.Date()
start_date <- end_date %m-% months(11) # 11 months ago from end_date
date_seq <- seq.Date(from = start_date, to = end_date, by = "month")
midpoint_date <- start_date + (end_date - start_date) / 2
-
+
g <- ggplot() +
scale_x_date(limits = c(start_date, end_date), date_breaks = "1 month", date_labels = "%m-%Y") +
scale_y_continuous(limits = c(0, 4)) +
@@ -425,9 +425,9 @@ cum_ci_plot2 <- function(pivotName){
legend.title = element_text(size = 8),
legend.text = element_text(size = 8)) +
annotate("text", x = midpoint_date, y = 2, label = "No data available", size = 6, hjust = 0.5)
-
+
subchunkify(g, 3.2, 10)
-
+
}, error = function(e) {
safe_log(paste("Error creating fallback CI plot for pivot", pivotName, ":", e$message), "ERROR")
cat(paste("No data available for field", pivotName, "\n"))
@@ -449,39 +449,39 @@ get_week_path <- function(mosaic_path, input_date, week_offset) {
if (missing(input_date)) {
stop("input_date is required")
}
-
+
tryCatch({
# Convert input_date to Date object (in case it's a string)
input_date <- as.Date(input_date)
if (is.na(input_date)) {
stop("Invalid input_date. Expected a Date object or a string convertible to Date.")
}
-
+
# Validate week_offset
week_offset <- as.integer(week_offset)
if (is.na(week_offset)) {
stop("Invalid week_offset. Expected an integer value.")
}
-
+
# Get the start of the week for the input date (adjust to Monday as the start of the week)
start_of_week <- lubridate::floor_date(input_date, unit = "week", week_start = 1)
-
+
# Calculate the new date after applying the week offset
target_date <- start_of_week + lubridate::weeks(week_offset)
-
+
# Get the week number and year of the target date
target_week <- sprintf("%02d", lubridate::isoweek(target_date)) # Left-pad week number with a zero if needed
target_year <- lubridate::isoyear(target_date)
-
+
# Generate the file path for the target week
path_to_week <- here::here(mosaic_path, paste0("week_", target_week, "_", target_year, ".tif"))
-
+
# Log the path calculation
safe_log(paste("Calculated path for week", target_week, "of year", target_year, ":", path_to_week), "INFO")
-
+
# Return the path
return(path_to_week)
-
+
}, error = function(e) {
safe_log(paste("Error calculating week path:", e$message), "ERROR")
stop(e$message)
diff --git a/renv.lock b/renv.lock
new file mode 100644
index 0000000..4607526
--- /dev/null
+++ b/renv.lock
@@ -0,0 +1,7385 @@
+{
+ "R": {
+ "Version": "4.4.2",
+ "Repositories": [
+ {
+ "Name": "CRAN",
+ "URL": "https://packagemanager.posit.co/cran/latest"
+ }
+ ]
+ },
+ "Packages": {
+ "CAST": {
+ "Package": "CAST",
+ "Version": "1.0.3",
+ "Source": "Repository",
+ "Type": "Package",
+ "Title": "'caret' Applications for Spatial-Temporal Models",
+ "Authors@R": "c(person(\"Hanna\", \"Meyer\", email = \"hanna.meyer@uni-muenster.de\", role = c(\"cre\", \"aut\")), person(\"Carles\", \"Milà\", role = c(\"aut\")), person(\"Marvin\", \"Ludwig\", role = c(\"aut\")), person(\"Jan\", \"Linnenbrink\", role = c(\"aut\")), person(\"Fabian\", \"Schumacher\", role = c(\"aut\")), person(\"Philipp\", \"Otto\", role = c(\"ctb\")), person(\"Chris\", \"Reudenbach\", role = c(\"ctb\")), person(\"Thomas\", \"Nauss\", role = c(\"ctb\")), person(\"Edzer\", \"Pebesma\", role = c(\"ctb\")), person(\"Jakub\", \"Nowosad\", role = c(\"ctb\")))",
+ "Author": "Hanna Meyer [cre, aut], Carles Milà [aut], Marvin Ludwig [aut], Jan Linnenbrink [aut], Fabian Schumacher [aut], Philipp Otto [ctb], Chris Reudenbach [ctb], Thomas Nauss [ctb], Edzer Pebesma [ctb], Jakub Nowosad [ctb]",
+ "Maintainer": "Hanna Meyer ",
+ "Description": "Supporting functionality to run 'caret' with spatial or spatial-temporal data. 'caret' is a frequently used package for model training and prediction using machine learning. CAST includes functions to improve spatial or spatial-temporal modelling tasks using 'caret'. It includes the newly suggested 'Nearest neighbor distance matching' cross-validation to estimate the performance of spatial prediction models and allows for spatial variable selection to selects suitable predictor variables in view to their contribution to the spatial model performance. CAST further includes functionality to estimate the (spatial) area of applicability of prediction models. Methods are described in Meyer et al. (2018) ; Meyer et al. (2019) ; Meyer and Pebesma (2021) ; Milà et al. (2022) ; Meyer and Pebesma (2022) ; Linnenbrink et al. (2023) ; Schumacher et al. (2024) . The package is described in detail in Meyer et al. (2024) .",
+ "License": "GPL (>= 2)",
+ "URL": "https://github.com/HannaMeyer/CAST, https://hannameyer.github.io/CAST/",
+ "Encoding": "UTF-8",
+ "LazyData": "false",
+ "Depends": [
+ "R (>= 4.1.0)"
+ ],
+ "BugReports": "https://github.com/HannaMeyer/CAST/issues/",
+ "Imports": [
+ "caret",
+ "stats",
+ "utils",
+ "ggplot2",
+ "graphics",
+ "FNN",
+ "plyr",
+ "zoo",
+ "methods",
+ "grDevices",
+ "data.table",
+ "sf",
+ "forcats",
+ "twosamples",
+ "terra",
+ "sp"
+ ],
+ "Suggests": [
+ "doParallel",
+ "lubridate",
+ "randomForest",
+ "knitr",
+ "geodata",
+ "mapview",
+ "rmarkdown",
+ "scales",
+ "parallel",
+ "gridExtra",
+ "viridis",
+ "stars",
+ "scam",
+ "rnaturalearth",
+ "MASS",
+ "RColorBrewer",
+ "tmap",
+ "PCAmixdata",
+ "gower",
+ "clustMixType",
+ "testthat (>= 3.0.0)"
+ ],
+ "RoxygenNote": "7.3.2",
+ "VignetteBuilder": "knitr",
+ "Config/testthat/edition": "3",
+ "NeedsCompilation": "no",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "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": "CRAN",
+ "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 "
+ },
+ "KernSmooth": {
+ "Package": "KernSmooth",
+ "Version": "2.23-24",
+ "Source": "Repository",
+ "Priority": "recommended",
+ "Date": "2024-05-16",
+ "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 = \"ripley@stats.ox.ac.uk\", 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-61",
+ "Source": "Repository",
+ "Priority": "recommended",
+ "Date": "2024-06-10",
+ "Revision": "$Rev: 3657 $",
+ "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 = \"ripley@stats.ox.ac.uk\"), 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-1",
+ "Source": "Repository",
+ "VersionNote": "do also bump src/version.h, inst/include/Matrix/version.h",
+ "Date": "2024-10-17",
+ "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 = \"base R's matrix implementation\"))",
+ "Depends": [
+ "R (>= 4.4.0)",
+ "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] (), Martin Maechler [aut, cre] (), Mikael Jagan [aut] (), Timothy A. Davis [ctb] (, SuiteSparse libraries, collaborators listed in dir(system.file(\"doc\", \"SuiteSparse\", package=\"Matrix\"), pattern=\"License\", full.names=TRUE, recursive=TRUE)), George Karypis [ctb] (, METIS library, Copyright: Regents of the University of Minnesota), Jason Riedy [ctb] (, GNU Octave's condest() and onenormest(), Copyright: Regents of the University of California), Jens Oehlschlägel [ctb] (initial nearPD()), R Core Team [ctb] (base R's matrix implementation)",
+ "Maintainer": "Martin Maechler ",
+ "Repository": "CRAN"
+ },
+ "ModelMetrics": {
+ "Package": "ModelMetrics",
+ "Version": "1.2.2.2",
+ "Source": "Repository",
+ "Title": "Rapid Calculation of Model Metrics",
+ "Date": "2018-11-03",
+ "Authors@R": "person(\"Tyler\", \"Hunt\", email = \"thunt@snapfinance.com\", role = c(\"aut\", \"cre\"))",
+ "Description": "Collection of metrics for evaluating models written in C++ using 'Rcpp'. Popular metrics include area under the curve, log loss, root mean square error, etc.",
+ "Depends": [
+ "R (>= 3.2.2)"
+ ],
+ "License": "GPL (>= 2)",
+ "Encoding": "UTF-8",
+ "LazyData": "true",
+ "LinkingTo": [
+ "Rcpp"
+ ],
+ "Imports": [
+ "Rcpp",
+ "data.table"
+ ],
+ "RoxygenNote": "6.0.1",
+ "Suggests": [
+ "testthat"
+ ],
+ "NeedsCompilation": "yes",
+ "Author": "Tyler Hunt [aut, cre]",
+ "Maintainer": "Tyler Hunt ",
+ "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": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "Rcpp": {
+ "Package": "Rcpp",
+ "Version": "1.0.14",
+ "Source": "Repository",
+ "Title": "Seamless R and C++ Integration",
+ "Date": "2025-01-11",
+ "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.",
+ "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",
+ "NeedsCompilation": "yes",
+ "Author": "Dirk Eddelbuettel [aut, cre] (), Romain Francois [aut] (), JJ Allaire [aut] (), Kevin Ushey [aut] (), Qiang Kou [aut] (), Nathan Russell [aut], Iñaki Ucar [aut] (), Doug Bates [aut] (), John Chambers [aut]",
+ "Maintainer": "Dirk Eddelbuettel ",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN",
+ "NeedsCompilation": "no"
+ },
+ "XML": {
+ "Package": "XML",
+ "Version": "3.99-0.18",
+ "Source": "Repository",
+ "Authors@R": "c(person(\"CRAN Team\", role = c('ctb', 'cre'), email = \"CRAN@r-project.org\", comment = \"de facto maintainer since 2013\"), person(\"Duncan\", \"Temple Lang\", role = c(\"aut\"), email = \"duncan@r-project.org\", comment = c(ORCID = \"0000-0003-0159-1546\")), person(\"Tomas\", \"Kalibera\", role = \"ctb\"))",
+ "Title": "Tools for Parsing and Generating XML Within R and S-Plus",
+ "Depends": [
+ "R (>= 4.0.0)",
+ "methods",
+ "utils"
+ ],
+ "Suggests": [
+ "bitops",
+ "RCurl"
+ ],
+ "SystemRequirements": "libxml2 (>= 2.6.3)",
+ "Description": "Many approaches for both reading and creating XML (and HTML) documents (including DTDs), both local and accessible via HTTP or FTP. Also offers access to an 'XPath' \"interpreter\".",
+ "URL": "https://www.omegahat.net/RSXML/",
+ "License": "BSD_3_clause + file LICENSE",
+ "Collate": "AAA.R DTD.R DTDClasses.R DTDRef.R SAXMethods.R XMLClasses.R applyDOM.R assignChild.R catalog.R createNode.R dynSupports.R error.R flatTree.R nodeAccessors.R parseDTD.R schema.R summary.R tangle.R toString.R tree.R version.R xmlErrorEnums.R xmlEventHandler.R xmlEventParse.R xmlHandler.R xmlInternalSource.R xmlOutputDOM.R xmlNodes.R xmlOutputBuffer.R xmlTree.R xmlTreeParse.R htmlParse.R hashTree.R zzz.R supports.R parser.R libxmlFeatures.R xmlString.R saveXML.R namespaces.R readHTMLTable.R reflection.R xmlToDataFrame.R bitList.R compare.R encoding.R fixNS.R xmlRoot.R serialize.R xmlMemoryMgmt.R keyValueDB.R solrDocs.R XMLRErrorInfo.R xincludes.R namespaceHandlers.R tangle1.R htmlLinks.R htmlLists.R getDependencies.R getRelativeURL.R xmlIncludes.R simplifyPath.R",
+ "NeedsCompilation": "yes",
+ "Author": "CRAN Team [ctb, cre] (de facto maintainer since 2013), Duncan Temple Lang [aut] (), Tomas Kalibera [ctb]",
+ "Maintainer": "CRAN Team ",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "blob": {
+ "Package": "blob",
+ "Version": "1.2.4",
+ "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"
+ ],
+ "Config/autostyle/scope": "line_breaks",
+ "Config/autostyle/strict": "false",
+ "Config/Needs/website": "tidyverse/tidytemplate",
+ "Encoding": "UTF-8",
+ "RoxygenNote": "7.2.3",
+ "NeedsCompilation": "no",
+ "Author": "Hadley Wickham [aut], Kirill Müller [cre], RStudio [cph, fnd]",
+ "Maintainer": "Kirill Müller ",
+ "Repository": "CRAN"
+ },
+ "broom": {
+ "Package": "broom",
+ "Version": "1.0.8",
+ "Source": "Repository",
+ "Type": "Package",
+ "Title": "Convert Statistical Objects into Tidy Tibbles",
+ "Authors@R": "c(person(given = \"David\", family = \"Robinson\", role = \"aut\", email = \"admiral.david@gmail.com\"), person(given = \"Alex\", family = \"Hayes\", role = \"aut\", email = \"alexpghayes@gmail.com\", comment = c(ORCID = \"0000-0002-4985-5160\")), person(given = \"Simon\", family = \"Couch\", role = c(\"aut\", \"cre\"), email = \"simon.couch@posit.co\", comment = c(ORCID = \"0000-0001-5676-5107\")), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(given = \"Indrajeet\", family = \"Patil\", role = \"ctb\", email = \"patilindrajeet.science@gmail.com\", comment = c(ORCID = \"0000-0003-1995-6531\")), person(given = \"Derek\", family = \"Chiu\", role = \"ctb\", email = \"dchiu@bccrc.ca\"), person(given = \"Matthieu\", family = \"Gomez\", role = \"ctb\", email = \"mattg@princeton.edu\"), person(given = \"Boris\", family = \"Demeshev\", role = \"ctb\", email = \"boris.demeshev@gmail.com\"), person(given = \"Dieter\", family = \"Menne\", role = \"ctb\", email = \"dieter.menne@menne-biomed.de\"), person(given = \"Benjamin\", family = \"Nutter\", role = \"ctb\", email = \"nutter@battelle.org\"), person(given = \"Luke\", family = \"Johnston\", role = \"ctb\", email = \"luke.johnston@mail.utoronto.ca\"), person(given = \"Ben\", family = \"Bolker\", role = \"ctb\", email = \"bolker@mcmaster.ca\"), person(given = \"Francois\", family = \"Briatte\", role = \"ctb\", email = \"f.briatte@gmail.com\"), person(given = \"Jeffrey\", family = \"Arnold\", role = \"ctb\", email = \"jeffrey.arnold@gmail.com\"), person(given = \"Jonah\", family = \"Gabry\", role = \"ctb\", email = \"jsg2201@columbia.edu\"), person(given = \"Luciano\", family = \"Selzer\", role = \"ctb\", email = \"luciano.selzer@gmail.com\"), person(given = \"Gavin\", family = \"Simpson\", role = \"ctb\", email = \"ucfagls@gmail.com\"), person(given = \"Jens\", family = \"Preussner\", role = \"ctb\", email = \" jens.preussner@mpi-bn.mpg.de\"), person(given = \"Jay\", family = \"Hesselberth\", role = \"ctb\", email = \"jay.hesselberth@gmail.com\"), person(given = \"Hadley\", family = \"Wickham\", role = \"ctb\", email = \"hadley@posit.co\"), person(given = \"Matthew\", family = \"Lincoln\", role = \"ctb\", email = \"matthew.d.lincoln@gmail.com\"), person(given = \"Alessandro\", family = \"Gasparini\", role = \"ctb\", email = \"ag475@leicester.ac.uk\"), person(given = \"Lukasz\", family = \"Komsta\", role = \"ctb\", email = \"lukasz.komsta@umlub.pl\"), person(given = \"Frederick\", family = \"Novometsky\", role = \"ctb\"), person(given = \"Wilson\", family = \"Freitas\", role = \"ctb\"), person(given = \"Michelle\", family = \"Evans\", role = \"ctb\"), person(given = \"Jason Cory\", family = \"Brunson\", role = \"ctb\", email = \"cornelioid@gmail.com\"), person(given = \"Simon\", family = \"Jackson\", role = \"ctb\", email = \"drsimonjackson@gmail.com\"), person(given = \"Ben\", family = \"Whalley\", role = \"ctb\", email = \"ben.whalley@plymouth.ac.uk\"), person(given = \"Karissa\", family = \"Whiting\", role = \"ctb\", email = \"karissa.whiting@gmail.com\"), person(given = \"Yves\", family = \"Rosseel\", role = \"ctb\", email = \"yrosseel@gmail.com\"), person(given = \"Michael\", family = \"Kuehn\", role = \"ctb\", email = \"mkuehn10@gmail.com\"), person(given = \"Jorge\", family = \"Cimentada\", role = \"ctb\", email = \"cimentadaj@gmail.com\"), person(given = \"Erle\", family = \"Holgersen\", role = \"ctb\", email = \"erle.holgersen@gmail.com\"), person(given = \"Karl\", family = \"Dunkle Werner\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0523-7309\")), person(given = \"Ethan\", family = \"Christensen\", role = \"ctb\", email = \"christensen.ej@gmail.com\"), person(given = \"Steven\", family = \"Pav\", role = \"ctb\", email = \"shabbychef@gmail.com\"), person(given = \"Paul\", family = \"PJ\", role = \"ctb\", email = \"pjpaul.stephens@gmail.com\"), person(given = \"Ben\", family = \"Schneider\", role = \"ctb\", email = \"benjamin.julius.schneider@gmail.com\"), person(given = \"Patrick\", family = \"Kennedy\", role = \"ctb\", email = \"pkqstr@protonmail.com\"), person(given = \"Lily\", family = \"Medina\", role = \"ctb\", email = \"lilymiru@gmail.com\"), person(given = \"Brian\", family = \"Fannin\", role = \"ctb\", email = \"captain@pirategrunt.com\"), person(given = \"Jason\", family = \"Muhlenkamp\", role = \"ctb\", email = \"jason.muhlenkamp@gmail.com\"), person(given = \"Matt\", family = \"Lehman\", role = \"ctb\"), person(given = \"Bill\", family = \"Denney\", role = \"ctb\", email = \"wdenney@humanpredictions.com\", comment = c(ORCID = \"0000-0002-5759-428X\")), person(given = \"Nic\", family = \"Crane\", role = \"ctb\"), person(given = \"Andrew\", family = \"Bates\", role = \"ctb\"), person(given = \"Vincent\", family = \"Arel-Bundock\", role = \"ctb\", email = \"vincent.arel-bundock@umontreal.ca\", comment = c(ORCID = \"0000-0003-2042-7063\")), person(given = \"Hideaki\", family = \"Hayashi\", role = \"ctb\"), person(given = \"Luis\", family = \"Tobalina\", role = \"ctb\"), person(given = \"Annie\", family = \"Wang\", role = \"ctb\", email = \"anniewang.uc@gmail.com\"), person(given = \"Wei Yang\", family = \"Tham\", role = \"ctb\", email = \"weiyang.tham@gmail.com\"), person(given = \"Clara\", family = \"Wang\", role = \"ctb\", email = \"clara.wang.94@gmail.com\"), person(given = \"Abby\", family = \"Smith\", role = \"ctb\", email = \"als1@u.northwestern.edu\", comment = c(ORCID = \"0000-0002-3207-0375\")), person(given = \"Jasper\", family = \"Cooper\", role = \"ctb\", email = \"jaspercooper@gmail.com\", comment = c(ORCID = \"0000-0002-8639-3188\")), person(given = \"E Auden\", family = \"Krauska\", role = \"ctb\", email = \"krauskae@gmail.com\", comment = c(ORCID = \"0000-0002-1466-5850\")), person(given = \"Alex\", family = \"Wang\", role = \"ctb\", email = \"x249wang@uwaterloo.ca\"), person(given = \"Malcolm\", family = \"Barrett\", role = \"ctb\", email = \"malcolmbarrett@gmail.com\", comment = c(ORCID = \"0000-0003-0299-5825\")), person(given = \"Charles\", family = \"Gray\", role = \"ctb\", email = \"charlestigray@gmail.com\", comment = c(ORCID = \"0000-0002-9978-011X\")), person(given = \"Jared\", family = \"Wilber\", role = \"ctb\"), person(given = \"Vilmantas\", family = \"Gegzna\", role = \"ctb\", email = \"GegznaV@gmail.com\", comment = c(ORCID = \"0000-0002-9500-5167\")), person(given = \"Eduard\", family = \"Szoecs\", role = \"ctb\", email = \"eduardszoecs@gmail.com\"), person(given = \"Frederik\", family = \"Aust\", role = \"ctb\", email = \"frederik.aust@uni-koeln.de\", comment = c(ORCID = \"0000-0003-4900-788X\")), person(given = \"Angus\", family = \"Moore\", role = \"ctb\", email = \"angusmoore9@gmail.com\"), person(given = \"Nick\", family = \"Williams\", role = \"ctb\", email = \"ntwilliams.personal@gmail.com\"), person(given = \"Marius\", family = \"Barth\", role = \"ctb\", email = \"marius.barth.uni.koeln@gmail.com\", comment = c(ORCID = \"0000-0002-3421-6665\")), person(given = \"Bruna\", family = \"Wundervald\", role = \"ctb\", email = \"brunadaviesw@gmail.com\", comment = c(ORCID = \"0000-0001-8163-220X\")), person(given = \"Joyce\", family = \"Cahoon\", role = \"ctb\", email = \"joyceyu48@gmail.com\", comment = c(ORCID = \"0000-0001-7217-4702\")), person(given = \"Grant\", family = \"McDermott\", role = \"ctb\", email = \"grantmcd@uoregon.edu\", comment = c(ORCID = \"0000-0001-7883-8573\")), person(given = \"Kevin\", family = \"Zarca\", role = \"ctb\", email = \"kevin.zarca@gmail.com\"), person(given = \"Shiro\", family = \"Kuriwaki\", role = \"ctb\", email = \"shirokuriwaki@gmail.com\", comment = c(ORCID = \"0000-0002-5687-2647\")), person(given = \"Lukas\", family = \"Wallrich\", role = \"ctb\", email = \"lukas.wallrich@gmail.com\", comment = c(ORCID = \"0000-0003-2121-5177\")), person(given = \"James\", family = \"Martherus\", role = \"ctb\", email = \"james@martherus.com\", comment = c(ORCID = \"0000-0002-8285-3300\")), person(given = \"Chuliang\", family = \"Xiao\", role = \"ctb\", email = \"cxiao@umich.edu\", comment = c(ORCID = \"0000-0002-8466-9398\")), person(given = \"Joseph\", family = \"Larmarange\", role = \"ctb\", email = \"joseph@larmarange.net\"), person(given = \"Max\", family = \"Kuhn\", role = \"ctb\", email = \"max@posit.co\"), person(given = \"Michal\", family = \"Bojanowski\", role = \"ctb\", email = \"michal2992@gmail.com\"), person(given = \"Hakon\", family = \"Malmedal\", role = \"ctb\", email = \"hmalmedal@gmail.com\"), person(given = \"Clara\", family = \"Wang\", role = \"ctb\"), person(given = \"Sergio\", family = \"Oller\", role = \"ctb\", email = \"sergioller@gmail.com\"), person(given = \"Luke\", family = \"Sonnet\", role = \"ctb\", email = \"luke.sonnet@gmail.com\"), person(given = \"Jim\", family = \"Hester\", role = \"ctb\", email = \"jim.hester@posit.co\"), person(given = \"Ben\", family = \"Schneider\", role = \"ctb\", email = \"benjamin.julius.schneider@gmail.com\"), person(given = \"Bernie\", family = \"Gray\", role = \"ctb\", email = \"bfgray3@gmail.com\", comment = c(ORCID = \"0000-0001-9190-6032\")), person(given = \"Mara\", family = \"Averick\", role = \"ctb\", email = \"mara@posit.co\"), person(given = \"Aaron\", family = \"Jacobs\", role = \"ctb\", email = \"atheriel@gmail.com\"), person(given = \"Andreas\", family = \"Bender\", role = \"ctb\", email = \"bender.at.R@gmail.com\"), person(given = \"Sven\", family = \"Templer\", role = \"ctb\", email = \"sven.templer@gmail.com\"), person(given = \"Paul-Christian\", family = \"Buerkner\", role = \"ctb\", email = \"paul.buerkner@gmail.com\"), person(given = \"Matthew\", family = \"Kay\", role = \"ctb\", email = \"mjskay@umich.edu\"), person(given = \"Erwan\", family = \"Le Pennec\", role = \"ctb\", email = \"lepennec@gmail.com\"), person(given = \"Johan\", family = \"Junkka\", role = \"ctb\", email = \"johan.junkka@umu.se\"), person(given = \"Hao\", family = \"Zhu\", role = \"ctb\", email = \"haozhu233@gmail.com\"), person(given = \"Benjamin\", family = \"Soltoff\", role = \"ctb\", email = \"soltoffbc@uchicago.edu\"), person(given = \"Zoe\", family = \"Wilkinson Saldana\", role = \"ctb\", email = \"zoewsaldana@gmail.com\"), person(given = \"Tyler\", family = \"Littlefield\", role = \"ctb\", email = \"tylurp1@gmail.com\"), person(given = \"Charles T.\", family = \"Gray\", role = \"ctb\", email = \"charlestigray@gmail.com\"), person(given = \"Shabbh E.\", family = \"Banks\", role = \"ctb\"), person(given = \"Serina\", family = \"Robinson\", role = \"ctb\", email = \"robi0916@umn.edu\"), person(given = \"Roger\", family = \"Bivand\", role = \"ctb\", email = \"Roger.Bivand@nhh.no\"), person(given = \"Riinu\", family = \"Ots\", role = \"ctb\", email = \"riinuots@gmail.com\"), person(given = \"Nicholas\", family = \"Williams\", role = \"ctb\", email = \"ntwilliams.personal@gmail.com\"), person(given = \"Nina\", family = \"Jakobsen\", role = \"ctb\"), person(given = \"Michael\", family = \"Weylandt\", role = \"ctb\", email = \"michael.weylandt@gmail.com\"), person(given = \"Lisa\", family = \"Lendway\", role = \"ctb\", email = \"llendway@macalester.edu\"), person(given = \"Karl\", family = \"Hailperin\", role = \"ctb\", email = \"khailper@gmail.com\"), person(given = \"Josue\", family = \"Rodriguez\", role = \"ctb\", email = \"jerrodriguez@ucdavis.edu\"), person(given = \"Jenny\", family = \"Bryan\", role = \"ctb\", email = \"jenny@posit.co\"), person(given = \"Chris\", family = \"Jarvis\", role = \"ctb\", email = \"Christopher1.jarvis@gmail.com\"), person(given = \"Greg\", family = \"Macfarlane\", role = \"ctb\", email = \"gregmacfarlane@gmail.com\"), person(given = \"Brian\", family = \"Mannakee\", role = \"ctb\", email = \"bmannakee@gmail.com\"), person(given = \"Drew\", family = \"Tyre\", role = \"ctb\", email = \"atyre2@unl.edu\"), person(given = \"Shreyas\", family = \"Singh\", role = \"ctb\", email = \"shreyas.singh.298@gmail.com\"), person(given = \"Laurens\", family = \"Geffert\", role = \"ctb\", email = \"laurensgeffert@gmail.com\"), person(given = \"Hong\", family = \"Ooi\", role = \"ctb\", email = \"hongooi@microsoft.com\"), person(given = \"Henrik\", family = \"Bengtsson\", role = \"ctb\", email = \"henrikb@braju.com\"), person(given = \"Eduard\", family = \"Szocs\", role = \"ctb\", email = \"eduardszoecs@gmail.com\"), person(given = \"David\", family = \"Hugh-Jones\", role = \"ctb\", email = \"davidhughjones@gmail.com\"), person(given = \"Matthieu\", family = \"Stigler\", role = \"ctb\", email = \"Matthieu.Stigler@gmail.com\"), person(given = \"Hugo\", family = \"Tavares\", role = \"ctb\", email = \"hm533@cam.ac.uk\", comment = c(ORCID = \"0000-0001-9373-2726\")), person(given = \"R. Willem\", family = \"Vervoort\", role = \"ctb\", email = \"Willemvervoort@gmail.com\"), person(given = \"Brenton M.\", family = \"Wiernik\", role = \"ctb\", email = \"brenton@wiernik.org\"), person(given = \"Josh\", family = \"Yamamoto\", role = \"ctb\", email = \"joshuayamamoto5@gmail.com\"), person(given = \"Jasme\", family = \"Lee\", role = \"ctb\"), person(given = \"Taren\", family = \"Sanders\", role = \"ctb\", email = \"taren.sanders@acu.edu.au\", comment = c(ORCID = \"0000-0002-4504-6008\")), person(given = \"Ilaria\", family = \"Prosdocimi\", role = \"ctb\", email = \"prosdocimi.ilaria@gmail.com\", comment = c(ORCID = \"0000-0001-8565-094X\")), person(given = \"Daniel D.\", family = \"Sjoberg\", role = \"ctb\", email = \"danield.sjoberg@gmail.com\", comment = c(ORCID = \"0000-0003-0862-2018\")), person(given = \"Alex\", family = \"Reinhart\", role = \"ctb\", email = \"areinhar@stat.cmu.edu\", 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 (>= 3.5)"
+ ],
+ "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",
+ "ergm (>= 3.10.4)",
+ "fixest (>= 0.9.0)",
+ "gam (>= 1.15)",
+ "gee",
+ "geepack",
+ "ggplot2",
+ "glmnet",
+ "glmnetUtils",
+ "gmm",
+ "Hmisc",
+ "irlba",
+ "interp",
+ "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",
+ "spdep (>= 1.1)",
+ "spatialreg",
+ "speedglm",
+ "spelling",
+ "survey",
+ "survival (>= 3.6-4)",
+ "systemfit",
+ "testthat (>= 3.0.0)",
+ "tseries",
+ "vars",
+ "zoo"
+ ],
+ "VignetteBuilder": "knitr",
+ "Config/Needs/website": "tidyverse/tidytemplate",
+ "Encoding": "UTF-8",
+ "RoxygenNote": "7.3.2",
+ "Language": "en-US",
+ "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'",
+ "Config/testthat/edition": "3",
+ "NeedsCompilation": "no",
+ "Author": "David Robinson [aut], Alex Hayes [aut] (), Simon Couch [aut, cre] (), Posit Software, PBC [cph, fnd], Indrajeet Patil [ctb] (), 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] (), 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] (), Nic Crane [ctb], Andrew Bates [ctb], Vincent Arel-Bundock [ctb] (), Hideaki Hayashi [ctb], Luis Tobalina [ctb], Annie Wang [ctb], Wei Yang Tham [ctb], Clara Wang [ctb], Abby Smith [ctb] (), Jasper Cooper [ctb] (), E Auden Krauska [ctb] (), Alex Wang [ctb], Malcolm Barrett [ctb] (), Charles Gray [ctb] (), Jared Wilber [ctb], Vilmantas Gegzna [ctb] (), Eduard Szoecs [ctb], Frederik Aust [ctb] (), Angus Moore [ctb], Nick Williams [ctb], Marius Barth [ctb] (), Bruna Wundervald [ctb] (), Joyce Cahoon [ctb] (), Grant McDermott [ctb] (), Kevin Zarca [ctb], Shiro Kuriwaki [ctb] (), Lukas Wallrich [ctb] (), James Martherus [ctb] (), Chuliang Xiao [ctb] (), 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] (), 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] (), R. Willem Vervoort [ctb], Brenton M. Wiernik [ctb], Josh Yamamoto [ctb], Jasme Lee [ctb], Taren Sanders [ctb] (), Ilaria Prosdocimi [ctb] (), Daniel D. Sjoberg [ctb] (), Alex Reinhart [ctb] ()",
+ "Maintainer": "Simon Couch ",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "caret": {
+ "Package": "caret",
+ "Version": "7.0-1",
+ "Source": "Repository",
+ "Title": "Classification and Regression Training",
+ "Authors@R": "c(person(given = \"Max\", family = \"Kuhn\", role = c(\"aut\", \"cre\"), email = \"mxkuhn@gmail.com\", comment = c(ORCID = \"0000-0003-2402-136X\")), person(given = \"Jed\", family = \"Wing\", role = \"ctb\"), person(given = \"Steve\", family = \"Weston\", role = \"ctb\"), person(given = \"Andre\", family = \"Williams\", role = \"ctb\"), person(given = \"Chris\", family = \"Keefer\", role = \"ctb\"), person(given = \"Allan\", family = \"Engelhardt\", role = \"ctb\"), person(given = \"Tony\", family = \"Cooper\", role = \"ctb\"), person(given = \"Zachary\", family = \"Mayer\", role = \"ctb\"), person(given = \"Brenton\", family = \"Kenkel\", role = \"ctb\"), person(given = \"R Core Team\", role = \"ctb\"), person(given = \"Michael\", family = \"Benesty\", role = \"ctb\"), person(given = \"Reynald\", family = \"Lescarbeau\", role = \"ctb\"), person(given = \"Andrew\", family = \"Ziem\", role = \"ctb\"), person(given = \"Luca\", family = \"Scrucca\", role = \"ctb\"), person(given = \"Yuan\", family = \"Tang\", role = \"ctb\"), person(given = \"Can\", family = \"Candan\", role = \"ctb\"), person(given = \"Tyler\", family = \"Hunt\", role = \"ctb\"))",
+ "Description": "Misc functions for training and plotting classification and regression models.",
+ "License": "GPL (>= 2)",
+ "URL": "https://github.com/topepo/caret/",
+ "BugReports": "https://github.com/topepo/caret/issues",
+ "Depends": [
+ "ggplot2",
+ "lattice (>= 0.20)",
+ "R (>= 3.2.0)"
+ ],
+ "Imports": [
+ "e1071",
+ "foreach",
+ "grDevices",
+ "methods",
+ "ModelMetrics (>= 1.2.2.2)",
+ "nlme",
+ "plyr",
+ "pROC",
+ "recipes (>= 0.1.10)",
+ "reshape2",
+ "stats",
+ "stats4",
+ "utils",
+ "withr (>= 2.0.0)"
+ ],
+ "Suggests": [
+ "BradleyTerry2",
+ "covr",
+ "Cubist",
+ "dplyr",
+ "earth (>= 2.2-3)",
+ "ellipse",
+ "fastICA",
+ "gam (>= 1.15)",
+ "ipred",
+ "kernlab",
+ "klaR",
+ "knitr",
+ "MASS",
+ "Matrix",
+ "mda",
+ "mgcv",
+ "mlbench",
+ "MLmetrics",
+ "nnet",
+ "pamr",
+ "party (>= 0.9-99992)",
+ "pls",
+ "proxy",
+ "randomForest",
+ "RANN",
+ "rmarkdown",
+ "rpart",
+ "spls",
+ "superpc",
+ "testthat (>= 0.9.1)",
+ "themis (>= 0.1.3)"
+ ],
+ "VignetteBuilder": "knitr",
+ "Encoding": "UTF-8",
+ "RoxygenNote": "7.3.2",
+ "NeedsCompilation": "yes",
+ "Author": "Max Kuhn [aut, cre] (), Jed Wing [ctb], Steve Weston [ctb], Andre Williams [ctb], Chris Keefer [ctb], Allan Engelhardt [ctb], Tony Cooper [ctb], Zachary Mayer [ctb], Brenton Kenkel [ctb], R Core Team [ctb], Michael Benesty [ctb], Reynald Lescarbeau [ctb], Andrew Ziem [ctb], Luca Scrucca [ctb], Yuan Tang [ctb], Can Candan [ctb], Tyler Hunt [ctb]",
+ "Maintainer": "Max Kuhn ",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "class": {
+ "Package": "class",
+ "Version": "7.3-22",
+ "Source": "Repository",
+ "Priority": "recommended",
+ "Date": "2023-05-02",
+ "Depends": [
+ "R (>= 3.0.0)",
+ "stats",
+ "utils"
+ ],
+ "Imports": [
+ "MASS"
+ ],
+ "Authors@R": "c(person(\"Brian\", \"Ripley\", role = c(\"aut\", \"cre\", \"cph\"), email = \"ripley@stats.ox.ac.uk\"), 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": "CRAN"
+ },
+ "cli": {
+ "Package": "cli",
+ "Version": "3.6.3",
+ "Source": "Repository",
+ "Title": "Helpers for Developing Command Line Interfaces",
+ "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", 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",
+ "mockery",
+ "processx",
+ "ps (>= 1.3.4.9000)",
+ "rlang (>= 1.0.2.9003)",
+ "rmarkdown",
+ "rprojroot",
+ "rstudioapi",
+ "testthat",
+ "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.2.3",
+ "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": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "clock": {
+ "Package": "clock",
+ "Version": "0.7.3",
+ "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": "CRAN"
+ },
+ "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-1",
+ "Source": "Repository",
+ "Date": "2024-07-26",
+ "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.1",
+ "NeedsCompilation": "yes",
+ "Author": "Ross Ihaka [aut], Paul Murrell [aut] (), Kurt Hornik [aut] (), Jason C. Fisher [aut] (), Reto Stauffer [aut] (), Claus O. Wilke [aut] (), Claire D. McWhite [aut] (), Achim Zeileis [aut, cre] ()",
+ "Maintainer": "Achim Zeileis ",
+ "Repository": "CRAN"
+ },
+ "cols4all": {
+ "Package": "cols4all",
+ "Version": "0.8",
+ "Source": "Repository",
+ "License": "GPL-3",
+ "Title": "Colors for all",
+ "Type": "Package",
+ "LazyLoad": "yes",
+ "Authors@R": "c( person(\"Martijn\", \"Tennekes\", email = \"mtennekes@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Marco\", \"Puts\", email = \"mputs@acm.org\", role = \"ctb\"), person(\"Achim\", \"Zeileis\", email = \"Achim.Zeileis@R-project.org\", role = \"ctb\"), person(\"Jakub\", \"Nowosad\", email = \"nowosad.jakub@gmail.com\", role = \"ctb\"), person(\"Robin\", \"Lovelace\", email = \"rob00x@gmail.com\", role = \"ctb\"), person(\"Helgasoft\", email = \"contact@helgasoft.com\", role = \"ctb\"), person(\"Matthew\", \"Petroff\", email = \"matthew@mpetroff.net\", role = \"ctb\"), person(\"Olivier\", \"Roy\", role = \"ctb\") )",
+ "Description": "Color palettes for all people, including those with color vision deficiency. Popular color palette series have been organized by type and have been scored on several properties such as color-blind-friendliness and fairness (i.e. do colors stand out equally?). Own palettes can also be loaded and analysed. Besides the common palette types (categorical, sequential, and diverging) it also includes cyclic and bivariate color palettes. Furthermore, a color for missing values is assigned to each palette.",
+ "Date": "2024-10-16",
+ "Encoding": "UTF-8",
+ "Depends": [
+ "R (>= 3.5.0)"
+ ],
+ "Imports": [
+ "methods",
+ "grDevices",
+ "stats",
+ "abind",
+ "png",
+ "stringdist",
+ "colorspace (>= 2.1)",
+ "spacesXYZ"
+ ],
+ "Suggests": [
+ "colorblindcheck",
+ "kableExtra",
+ "knitr",
+ "shiny",
+ "shinyjs",
+ "ggplot2",
+ "scales",
+ "rmarkdown",
+ "bookdown",
+ "bibtex",
+ "plotly"
+ ],
+ "URL": "https://mtennekes.github.io/cols4all/, https://github.com/mtennekes/cols4all",
+ "BugReports": "https://github.com/mtennekes/cols4all/issues",
+ "RoxygenNote": "7.3.2",
+ "NeedsCompilation": "no",
+ "Author": "Martijn Tennekes [aut, cre], Marco Puts [ctb], Achim Zeileis [ctb], Jakub Nowosad [ctb], Robin Lovelace [ctb], Helgasoft [ctb], Matthew Petroff [ctb], Olivier Roy [ctb]",
+ "Maintainer": "Martijn Tennekes ",
+ "Repository": "CRAN"
+ },
+ "commonmark": {
+ "Package": "commonmark",
+ "Version": "1.9.5",
+ "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] (), John MacFarlane [cph] (Author of cmark)",
+ "Maintainer": "Jeroen Ooms ",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "cpp11": {
+ "Package": "cpp11",
+ "Version": "0.5.2",
+ "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] (), Jim Hester [aut] (), Romain François [aut] (), 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": "CRAN"
+ },
+ "crosstalk": {
+ "Package": "crosstalk",
+ "Version": "1.2.1",
+ "Source": "Repository",
+ "Type": "Package",
+ "Title": "Inter-Widget Interactivity for HTML Widgets",
+ "Authors@R": "c( person(\"Joe\", \"Cheng\", role = \"aut\", email = \"joe@posit.co\"), person(\"Carson\", \"Sievert\", role = c(\"aut\", \"cre\"), email = \"carson@posit.co\", comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), 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/www/shared/jquery-AUTHORS.txt\"), person(\"Mark\", \"Otto\", role = \"ctb\", comment = \"Bootstrap library\"), person(\"Jacob\", \"Thornton\", role = \"ctb\", comment = \"Bootstrap library\"), person(family = \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"), person(family = \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"), person(\"Brian\", \"Reavis\", role = c(\"ctb\", \"cph\"), comment = \"selectize.js library\"), person(\"Kristopher Michael\", \"Kowal\", role = c(\"ctb\", \"cph\"), comment = \"es5-shim library\"), person(family = \"es5-shim contributors\", role = c(\"ctb\", \"cph\"), comment = \"es5-shim library\"), person(\"Denis\", \"Ineshin\", role = c(\"ctb\", \"cph\"), comment = \"ion.rangeSlider library\"), person(\"Sami\", \"Samhuri\", role = c(\"ctb\", \"cph\"), comment = \"Javascript strftime library\") )",
+ "Description": "Provides building blocks for allowing HTML widgets to communicate with each other, with Shiny or without (i.e. static .html files). Currently supports linked brushing and filtering.",
+ "License": "MIT + file LICENSE",
+ "Imports": [
+ "htmltools (>= 0.3.6)",
+ "jsonlite",
+ "lazyeval",
+ "R6"
+ ],
+ "Suggests": [
+ "shiny",
+ "ggplot2",
+ "testthat (>= 2.1.0)",
+ "sass",
+ "bslib"
+ ],
+ "URL": "https://rstudio.github.io/crosstalk/, https://github.com/rstudio/crosstalk",
+ "BugReports": "https://github.com/rstudio/crosstalk/issues",
+ "RoxygenNote": "7.2.3",
+ "Encoding": "UTF-8",
+ "NeedsCompilation": "no",
+ "Author": "Joe Cheng [aut], Carson Sievert [aut, cre] (), Posit Software, PBC [cph, fnd], jQuery Foundation [cph] (jQuery library and jQuery UI library), jQuery contributors [ctb, cph] (jQuery library; authors listed in inst/www/shared/jquery-AUTHORS.txt), Mark Otto [ctb] (Bootstrap library), Jacob Thornton [ctb] (Bootstrap library), Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Brian Reavis [ctb, cph] (selectize.js library), Kristopher Michael Kowal [ctb, cph] (es5-shim library), es5-shim contributors [ctb, cph] (es5-shim library), Denis Ineshin [ctb, cph] (ion.rangeSlider library), Sami Samhuri [ctb, cph] (Javascript strftime library)",
+ "Maintainer": "Carson Sievert ",
+ "Repository": "CRAN"
+ },
+ "curl": {
+ "Package": "curl",
+ "Version": "6.2.2",
+ "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.62): 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.9000",
+ "Encoding": "UTF-8",
+ "Language": "en-US",
+ "NeedsCompilation": "yes",
+ "Author": "Jeroen Ooms [aut, cre] (), Hadley Wickham [ctb], Posit Software, PBC [cph]",
+ "Maintainer": "Jeroen Ooms ",
+ "Repository": "CRAN"
+ },
+ "data.table": {
+ "Package": "data.table",
+ "Version": "1.16.4",
+ "Source": "Repository",
+ "Title": "Extension of `data.frame`",
+ "Depends": [
+ "R (>= 3.3.0)"
+ ],
+ "Imports": [
+ "methods"
+ ],
+ "Suggests": [
+ "bit64 (>= 4.0.0)",
+ "bit (>= 4.0.4)",
+ "R.utils",
+ "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\"), person(\"Michael\",\"Chirico\", role=\"aut\", comment = c(ORCID=\"0000-0003-0787-087X\")), person(\"Toby\",\"Hocking\", role=\"aut\", comment = c(ORCID=\"0000-0002-3146-0865\")), person(\"Benjamin\",\"Schwendinger\",role=\"aut\", comment = c(ORCID=\"0000-0003-3315-8114\")), 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(\"@javrucebo\",\"\", role=\"ctb\"), person(\"@marc-outins\",\"\", 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(\"Ivan\", \"Krylov\", role=\"ctb\") )",
+ "NeedsCompilation": "yes",
+ "Author": "Tyson Barrett [aut, cre] (), Matt Dowle [aut], Arun Srinivasan [aut], Jan Gorecki [aut], Michael Chirico [aut] (), Toby Hocking [aut] (), Benjamin Schwendinger [aut] (), 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], @marc-outins [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], Ivan Krylov [ctb]",
+ "Maintainer": "Tyson Barrett ",
+ "Repository": "CRAN"
+ },
+ "dbplyr": {
+ "Package": "dbplyr",
+ "Version": "2.5.0",
+ "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.1)",
+ "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.1",
+ "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": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "dichromat": {
+ "Package": "dichromat",
+ "Version": "2.0-0.1",
+ "Source": "Repository",
+ "Date": "2013-01-23",
+ "Title": "Color Schemes for Dichromats",
+ "Authors@R": "c(person(given = \"Thomas\", family = \"Lumley\", role = c(\"aut\", \"cre\"), email = \"tlumley@u.washington.edu\"), person(given = \"Ken\", family = \"Knoblauch\", role = \"ctb\", email = \"ken.knoblauch@inserm.fr\"), person(given = \"Scott\", family = \"Waichler\", role = \"ctb\", email = \"scott.waichler@pnl.gov\"), person(given = \"Achim\", family = \"Zeileis\", role = \"ctb\", email = \"Achim.Zeileis@R-project.org\"))",
+ "Description": "Collapse red-green or green-blue distinctions to simulate the effects of different types of color-blindness.",
+ "Depends": [
+ "R (>= 2.10)",
+ "stats"
+ ],
+ "License": "GPL-2",
+ "LazyLoad": "Yes",
+ "Author": "Thomas Lumley [aut, cre], Ken Knoblauch [ctb], Scott Waichler [ctb], Achim Zeileis [ctb]",
+ "Maintainer": "Thomas Lumley ",
+ "Repository": "CRAN",
+ "NeedsCompilation": "no"
+ },
+ "digest": {
+ "Package": "digest",
+ "Version": "0.6.37",
+ "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\"), 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\"), person(\"Duncan\", \"Murdoch\", role=\"ctb\"), person(\"Jim\", \"Hester\", role=\"ctb\"), 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\"), person(\"Ion\", \"Suruceanu\", role=\"ctb\"), person(\"Bill\", \"Denney\", role=\"ctb\"), person(\"Dirk\", \"Schumacher\", role=\"ctb\"), person(\"András\", \"Svraka\", role=\"ctb\"), person(\"Sergey\", \"Fedorov\", role=\"ctb\"), 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\"), 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\"))",
+ "Date": "2024-08-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://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"
+ ],
+ "VignetteBuilder": "simplermarkdown",
+ "Encoding": "UTF-8",
+ "NeedsCompilation": "yes",
+ "Author": "Dirk Eddelbuettel [aut, cre] (), Antoine Lucas [ctb], Jarek Tuszynski [ctb], Henrik Bengtsson [ctb] (), Simon Urbanek [ctb] (), Mario Frasca [ctb], Bryan Lewis [ctb], Murray Stokely [ctb], Hannes Muehleisen [ctb], Duncan Murdoch [ctb], Jim Hester [ctb], Wush Wu [ctb] (), Qiang Kou [ctb] (), Thierry Onkelinx [ctb] (), Michel Lang [ctb] (), Viliam Simko [ctb], Kurt Hornik [ctb] (), Radford Neal [ctb] (), Kendon Bell [ctb] (), Matthew de Queljoe [ctb], Dmitry Selivanov [ctb], Ion Suruceanu [ctb], Bill Denney [ctb], Dirk Schumacher [ctb], András Svraka [ctb], Sergey Fedorov [ctb], Will Landau [ctb] (), Floris Vanderhaeghe [ctb] (), Kevin Tappe [ctb], Harris McGehee [ctb], Tim Mastny [ctb], Aaron Peikert [ctb] (), Mark van der Loo [ctb] (), Chris Muir [ctb] (), Moritz Beller [ctb] (), Sebastian Campbell [ctb], Winston Chang [ctb] (), Dean Attali [ctb] (), Michael Chirico [ctb] (), Kevin Ushey [ctb]",
+ "Maintainer": "Dirk Eddelbuettel ",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "dtplyr": {
+ "Package": "dtplyr",
+ "Version": "1.3.1",
+ "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 (>= 3.3)"
+ ],
+ "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.2.3",
+ "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": "CRAN"
+ },
+ "e1071": {
+ "Package": "e1071",
+ "Version": "1.7-16",
+ "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] (), Evgenia Dimitriadou [aut, cph], Kurt Hornik [aut] (), 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": "CRAN"
+ },
+ "evaluate": {
+ "Package": "evaluate",
+ "Version": "1.0.3",
+ "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",
+ "rlang",
+ "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] (), 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": "CRAN"
+ },
+ "exactextractr": {
+ "Package": "exactextractr",
+ "Version": "0.10.0",
+ "Source": "Repository",
+ "Title": "Fast Extraction from Raster Datasets using Polygons",
+ "Authors@R": "c( person(\"Daniel Baston\", email = \"dbaston@isciences.com\", role = c(\"aut\", \"cre\")), person(\"ISciences, LLC\", role=\"cph\"))",
+ "Description": "Quickly and accurately summarizes raster values over polygonal areas (\"zonal statistics\").",
+ "Depends": [
+ "R (>= 3.4.0)"
+ ],
+ "License": "Apache License (== 2.0)",
+ "SystemRequirements": "GEOS (>= 3.5.0)",
+ "Imports": [
+ "Rcpp (>= 0.12.12)",
+ "methods",
+ "raster",
+ "sf (>= 0.9.0)"
+ ],
+ "URL": "https://isciences.gitlab.io/exactextractr/, https://github.com/isciences/exactextractr",
+ "BugReports": "https://github.com/isciences/exactextractr/issues",
+ "LinkingTo": [
+ "Rcpp"
+ ],
+ "Suggests": [
+ "dplyr",
+ "foreign",
+ "knitr",
+ "ncdf4",
+ "rmarkdown",
+ "testthat",
+ "terra (>= 1.5.17)"
+ ],
+ "Encoding": "UTF-8",
+ "RoxygenNote": "7.1.2",
+ "VignetteBuilder": "knitr",
+ "NeedsCompilation": "yes",
+ "Author": "Daniel Baston [aut, cre], ISciences, LLC [cph]",
+ "Maintainer": "Daniel Baston ",
+ "Repository": "CRAN"
+ },
+ "fansi": {
+ "Package": "fansi",
+ "Version": "1.0.6",
+ "Source": "Repository",
+ "Title": "ANSI Control Sequence Aware String Functions",
+ "Description": "Counterparts to R string manipulation functions that account for the effects of ANSI text formatting control sequences.",
+ "Authors@R": "c( person(\"Brodie\", \"Gaslam\", email=\"brodie.gaslam@yahoo.com\", role=c(\"aut\", \"cre\")), person(\"Elliott\", \"Sales De Andrade\", role=\"ctb\"), person(family=\"R Core Team\", email=\"R-core@r-project.org\", role=\"cph\", comment=\"UTF8 byte length calcs from src/util.c\" ))",
+ "Depends": [
+ "R (>= 3.1.0)"
+ ],
+ "License": "GPL-2 | GPL-3",
+ "URL": "https://github.com/brodieG/fansi",
+ "BugReports": "https://github.com/brodieG/fansi/issues",
+ "VignetteBuilder": "knitr",
+ "Suggests": [
+ "unitizer",
+ "knitr",
+ "rmarkdown"
+ ],
+ "Imports": [
+ "grDevices",
+ "utils"
+ ],
+ "RoxygenNote": "7.2.3",
+ "Encoding": "UTF-8",
+ "Collate": "'constants.R' 'fansi-package.R' 'internal.R' 'load.R' 'misc.R' 'nchar.R' 'strwrap.R' 'strtrim.R' 'strsplit.R' 'substr2.R' 'trimws.R' 'tohtml.R' 'unhandled.R' 'normalize.R' 'sgr.R'",
+ "NeedsCompilation": "yes",
+ "Author": "Brodie Gaslam [aut, cre], Elliott Sales De Andrade [ctb], R Core Team [cph] (UTF8 byte length calcs from src/util.c)",
+ "Maintainer": "Brodie Gaslam ",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "forcats": {
+ "Package": "forcats",
+ "Version": "1.0.0",
+ "Source": "Repository",
+ "Title": "Tools for Working with Categorical Variables (Factors)",
+ "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = c(\"aut\", \"cre\")), person(\"RStudio\", role = c(\"cph\", \"fnd\")) )",
+ "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 (>= 3.4)"
+ ],
+ "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.2.3",
+ "NeedsCompilation": "no",
+ "Author": "Hadley Wickham [aut, cre], RStudio [cph, fnd]",
+ "Maintainer": "Hadley Wickham ",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "fs": {
+ "Package": "fs",
+ "Version": "1.6.5",
+ "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": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "future": {
+ "Package": "future",
+ "Version": "1.40.0",
+ "Source": "Repository",
+ "Title": "Unified Parallel and Distributed Processing in R for Everyone",
+ "Depends": [
+ "R (>= 3.2.0)"
+ ],
+ "Imports": [
+ "digest",
+ "globals (>= 0.16.1)",
+ "listenv (>= 0.8.0)",
+ "parallel",
+ "parallelly (>= 1.43.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",
+ "Encoding": "UTF-8",
+ "RoxygenNote": "7.3.2",
+ "NeedsCompilation": "no",
+ "Author": "Henrik Bengtsson [aut, cre, cph] ()",
+ "Maintainer": "Henrik Bengtsson ",
+ "Repository": "CRAN"
+ },
+ "future.apply": {
+ "Package": "future.apply",
+ "Version": "1.11.3",
+ "Source": "Repository",
+ "Title": "Apply Function to Elements in Parallel using Futures",
+ "Depends": [
+ "R (>= 3.2.0)",
+ "future (>= 1.28.0)"
+ ],
+ "Imports": [
+ "globals (>= 0.16.1)",
+ "parallel",
+ "utils"
+ ],
+ "Suggests": [
+ "datasets",
+ "stats",
+ "tools",
+ "listenv (>= 0.8.0)",
+ "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",
+ "RoxygenNote": "7.3.2",
+ "NeedsCompilation": "no",
+ "Author": "Henrik Bengtsson [aut, cre, cph] (), R Core Team [cph, ctb]",
+ "Maintainer": "Henrik Bengtsson ",
+ "Repository": "CRAN"
+ },
+ "gargle": {
+ "Package": "gargle",
+ "Version": "1.5.2",
+ "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",
+ "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.2.3",
+ "NeedsCompilation": "no",
+ "Author": "Jennifer Bryan [aut, cre] (), Craig Citro [aut], Hadley Wickham [aut] (), Google Inc [cph], Posit Software, PBC [cph, fnd]",
+ "Maintainer": "Jennifer Bryan ",
+ "Repository": "CRAN"
+ },
+ "generics": {
+ "Package": "generics",
+ "Version": "0.1.3",
+ "Source": "Repository",
+ "Title": "Common S3 Generics not Provided by Base R Methods Related to Model Fitting",
+ "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = c(\"aut\", \"cre\")), person(\"Max\", \"Kuhn\", , \"max@rstudio.com\", role = \"aut\"), person(\"Davis\", \"Vaughan\", , \"davis@rstudio.com\", role = \"aut\"), person(\"RStudio\", role = \"cph\") )",
+ "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.2)"
+ ],
+ "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.2.0",
+ "NeedsCompilation": "no",
+ "Author": "Hadley Wickham [aut, cre], Max Kuhn [aut], Davis Vaughan [aut], RStudio [cph]",
+ "Maintainer": "Hadley Wickham ",
+ "Repository": "CRAN"
+ },
+ "geojsonsf": {
+ "Package": "geojsonsf",
+ "Version": "2.0.3",
+ "Source": "Repository",
+ "Type": "Package",
+ "Title": "GeoJSON to Simple Feature Converter",
+ "Date": "2022-05-31",
+ "Authors@R": "c( person(\"David\", \"Cooley\", ,\"dcooley@symbolix.com.au\", role = c(\"aut\", \"cre\")) )",
+ "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 (>= 3.3.0)"
+ ],
+ "SystemRequirements": "C++11",
+ "LinkingTo": [
+ "geometries",
+ "jsonify (>= 1.1.1)",
+ "rapidjsonr (>= 1.2.0)",
+ "Rcpp",
+ "sfheaders (>= 0.2.2)"
+ ],
+ "Imports": [
+ "Rcpp"
+ ],
+ "RoxygenNote": "7.1.0",
+ "Suggests": [
+ "covr",
+ "jsonify",
+ "knitr",
+ "rmarkdown",
+ "tinytest"
+ ],
+ "VignetteBuilder": "knitr",
+ "NeedsCompilation": "yes",
+ "Author": "David Cooley [aut, cre]",
+ "Maintainer": "David Cooley ",
+ "Repository": "CRAN"
+ },
+ "geometries": {
+ "Package": "geometries",
+ "Version": "0.2.4",
+ "Source": "Repository",
+ "Type": "Package",
+ "Title": "Convert Between R Objects and Geometric Structures",
+ "Date": "2024-01-16",
+ "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.0.10)"
+ ],
+ "Suggests": [
+ "covr",
+ "knitr",
+ "rmarkdown",
+ "tinytest"
+ ],
+ "VignetteBuilder": "knitr",
+ "NeedsCompilation": "yes",
+ "Author": "David Cooley [aut, cre]",
+ "Maintainer": "David Cooley ",
+ "Repository": "CRAN"
+ },
+ "ggplot2": {
+ "Package": "ggplot2",
+ "Version": "3.5.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\")) )",
+ "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 (>= 3.5)"
+ ],
+ "Imports": [
+ "cli",
+ "glue",
+ "grDevices",
+ "grid",
+ "gtable (>= 0.1.1)",
+ "isoband",
+ "lifecycle (> 1.0.1)",
+ "MASS",
+ "mgcv",
+ "rlang (>= 1.1.0)",
+ "scales (>= 1.3.0)",
+ "stats",
+ "tibble",
+ "vctrs (>= 0.6.0)",
+ "withr (>= 2.5.0)"
+ ],
+ "Suggests": [
+ "covr",
+ "dplyr",
+ "ggplot2movies",
+ "hexbin",
+ "Hmisc",
+ "knitr",
+ "mapproj",
+ "maps",
+ "multcomp",
+ "munsell",
+ "nlme",
+ "profvis",
+ "quantreg",
+ "ragg (>= 1.2.6)",
+ "RColorBrewer",
+ "rmarkdown",
+ "rpart",
+ "sf (>= 0.7-3)",
+ "svglite (>= 2.1.2)",
+ "testthat (>= 3.1.2)",
+ "vdiffr (>= 1.0.6)",
+ "xml2"
+ ],
+ "Enhances": [
+ "sp"
+ ],
+ "VignetteBuilder": "knitr",
+ "Config/Needs/website": "ggtext, tidyr, forcats, tidyverse/tidytemplate",
+ "Config/testthat/edition": "3",
+ "Encoding": "UTF-8",
+ "LazyData": "true",
+ "RoxygenNote": "7.3.1",
+ "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' 'compat-plyr.R' 'utilities.R' 'aes.R' 'utilities-checks.R' 'legend-draw.R' 'geom-.R' 'annotation-custom.R' 'annotation-logticks.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-lm.R' 'fortify-map.R' 'fortify-multcomp.R' 'fortify-spatial.R' 'fortify.R' 'stat-.R' 'geom-abline.R' 'geom-rect.R' 'geom-bar.R' 'geom-bin2d.R' 'geom-blank.R' 'geom-boxplot.R' 'geom-col.R' 'geom-path.R' 'geom-contour.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-errorbarh.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-point.R' 'geom-pointrange.R' 'geom-quantile.R' 'geom-rug.R' 'geom-sf.R' 'geom-smooth.R' 'geom-spoke.R' 'geom-text.R' 'geom-tile.R' 'geom-violin.R' 'geom-vline.R' 'ggplot2-package.R' 'grob-absolute.R' 'grob-dotstack.R' 'grob-null.R' 'grouping.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' 'layer.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' 'margins.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-type.R' 'scale-view.R' 'scale-viridis.R' 'scales-.R' 'stat-align.R' 'stat-bin.R' 'stat-bin2d.R' 'stat-bindot.R' 'stat-binhex.R' 'stat-boxplot.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-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-2d.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' 'utilities-break.R' 'utilities-grid.R' 'utilities-help.R' 'utilities-matrix.R' 'utilities-patterns.R' 'utilities-resolution.R' 'utilities-tidy-eval.R' 'zxx.R' 'zzz.R'",
+ "NeedsCompilation": "no",
+ "Author": "Hadley Wickham [aut] (), Winston Chang [aut] (), Lionel Henry [aut], Thomas Lin Pedersen [aut, cre] (), Kohske Takahashi [aut], Claus Wilke [aut] (), Kara Woo [aut] (), Hiroaki Yutani [aut] (), Dewey Dunnington [aut] (), Teun van den Brand [aut] (), Posit, PBC [cph, fnd]",
+ "Maintainer": "Thomas Lin Pedersen ",
+ "Repository": "CRAN"
+ },
+ "globals": {
+ "Package": "globals",
+ "Version": "0.16.3",
+ "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@rstudio.com\"))",
+ "Description": "Identifies global (\"unknown\" or \"free\") objects in R expressions by code inspection using various strategies (ordered, liberal, or conservative). 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",
+ "URL": "https://globals.futureverse.org, https://github.com/HenrikBengtsson/globals",
+ "BugReports": "https://github.com/HenrikBengtsson/globals/issues",
+ "RoxygenNote": "7.3.1",
+ "NeedsCompilation": "no",
+ "Author": "Henrik Bengtsson [aut, cre, cph], Davis Vaughan [ctb]",
+ "Maintainer": "Henrik Bengtsson ",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "googledrive": {
+ "Package": "googledrive",
+ "Version": "2.1.1",
+ "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 (>= 3.6)"
+ ],
+ "Imports": [
+ "cli (>= 3.0.0)",
+ "gargle (>= 1.5.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",
+ "mockr",
+ "rmarkdown",
+ "spelling",
+ "testthat (>= 3.1.3)"
+ ],
+ "VignetteBuilder": "knitr",
+ "Config/Needs/website": "tidyverse, tidyverse/tidytemplate",
+ "Config/testthat/edition": "3",
+ "Encoding": "UTF-8",
+ "Language": "en-US",
+ "RoxygenNote": "7.2.3",
+ "NeedsCompilation": "no",
+ "Author": "Lucy D'Agostino McGowan [aut], Jennifer Bryan [aut, cre] (), Posit Software, PBC [cph, fnd]",
+ "Maintainer": "Jennifer Bryan ",
+ "Repository": "CRAN"
+ },
+ "googlesheets4": {
+ "Package": "googlesheets4",
+ "Version": "1.1.1",
+ "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.5.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.2.3",
+ "NeedsCompilation": "no",
+ "Author": "Jennifer Bryan [cre, aut] (), Posit Software, PBC [cph, fnd]",
+ "Maintainer": "Jennifer Bryan ",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "gridExtra": {
+ "Package": "gridExtra",
+ "Version": "2.3",
+ "Source": "Repository",
+ "Authors@R": "c(person(\"Baptiste\", \"Auguie\", email = \"baptiste.auguie@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Anton\", \"Antonov\", email = \"tonytonov@gmail.com\", role = c(\"ctb\")))",
+ "License": "GPL (>= 2)",
+ "Title": "Miscellaneous Functions for \"Grid\" Graphics",
+ "Type": "Package",
+ "Description": "Provides a number of user-level functions to work with \"grid\" graphics, notably to arrange multiple grid-based plots on a page, and draw tables.",
+ "VignetteBuilder": "knitr",
+ "Imports": [
+ "gtable",
+ "grid",
+ "grDevices",
+ "graphics",
+ "utils"
+ ],
+ "Suggests": [
+ "ggplot2",
+ "egg",
+ "lattice",
+ "knitr",
+ "testthat"
+ ],
+ "RoxygenNote": "6.0.1",
+ "NeedsCompilation": "no",
+ "Author": "Baptiste Auguie [aut, cre], Anton Antonov [ctb]",
+ "Maintainer": "Baptiste Auguie ",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "hardhat": {
+ "Package": "hardhat",
+ "Version": "1.4.1",
+ "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\")) )",
+ "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 (>= 3.5.0)"
+ ],
+ "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",
+ "Encoding": "UTF-8",
+ "LazyData": "true",
+ "RoxygenNote": "7.3.2",
+ "NeedsCompilation": "no",
+ "Author": "Hannah Frick [aut, cre] (), Davis Vaughan [aut], Max Kuhn [aut], Posit Software, PBC [cph, fnd]",
+ "Maintainer": "Hannah Frick ",
+ "Repository": "CRAN"
+ },
+ "haven": {
+ "Package": "haven",
+ "Version": "2.5.4",
+ "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.2.3",
+ "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": "CRAN"
+ },
+ "here": {
+ "Package": "here",
+ "Version": "1.0.1",
+ "Source": "Repository",
+ "Title": "A Simpler Way to Find Your Files",
+ "Date": "2020-12-13",
+ "Authors@R": "c(person(given = \"Kirill\", family = \"M\\u00fcller\", role = c(\"aut\", \"cre\"), email = \"krlmlr+r@mailbox.org\", 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.0.2)"
+ ],
+ "Suggests": [
+ "conflicted",
+ "covr",
+ "fs",
+ "knitr",
+ "palmerpenguins",
+ "plyr",
+ "readr",
+ "rlang",
+ "rmarkdown",
+ "testthat",
+ "uuid",
+ "withr"
+ ],
+ "VignetteBuilder": "knitr",
+ "Encoding": "UTF-8",
+ "LazyData": "true",
+ "RoxygenNote": "7.1.1.9000",
+ "Config/testthat/edition": "3",
+ "NeedsCompilation": "no",
+ "Author": "Kirill Müller [aut, cre] (), Jennifer Bryan [ctb] ()",
+ "Maintainer": "Kirill Müller ",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "hms": {
+ "Package": "hms",
+ "Version": "1.1.3",
+ "Source": "Repository",
+ "Title": "Pretty Time of Day",
+ "Date": "2023-03-21",
+ "Authors@R": "c( person(\"Kirill\", \"Müller\", role = c(\"aut\", \"cre\"), email = \"kirill@cynkra.com\", comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"R Consortium\", role = \"fnd\"), person(\"RStudio\", role = \"fnd\") )",
+ "Description": "Implements an S3 class for storing and formatting time-of-day values, based on the 'difftime' class.",
+ "Imports": [
+ "lifecycle",
+ "methods",
+ "pkgconfig",
+ "rlang (>= 1.0.2)",
+ "vctrs (>= 0.3.8)"
+ ],
+ "Suggests": [
+ "crayon",
+ "lubridate",
+ "pillar (>= 1.1.0)",
+ "testthat (>= 3.0.0)"
+ ],
+ "License": "MIT + file LICENSE",
+ "Encoding": "UTF-8",
+ "URL": "https://hms.tidyverse.org/, https://github.com/tidyverse/hms",
+ "BugReports": "https://github.com/tidyverse/hms/issues",
+ "RoxygenNote": "7.2.3",
+ "Config/testthat/edition": "3",
+ "Config/autostyle/scope": "line_breaks",
+ "Config/autostyle/strict": "false",
+ "Config/Needs/website": "tidyverse/tidytemplate",
+ "NeedsCompilation": "no",
+ "Author": "Kirill Müller [aut, cre] (), R Consortium [fnd], RStudio [fnd]",
+ "Maintainer": "Kirill Müller ",
+ "Repository": "CRAN"
+ },
+ "htmltools": {
+ "Package": "htmltools",
+ "Version": "0.5.8.1",
+ "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.1",
+ "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] (), Barret Schloerke [aut] (), Winston Chang [aut] (), Yihui Xie [aut], Jeff Allen [aut], Posit Software, PBC [cph, fnd]",
+ "Maintainer": "Carson Sievert ",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "httpuv": {
+ "Package": "httpuv",
+ "Version": "1.6.15",
+ "Source": "Repository",
+ "Type": "Package",
+ "Title": "HTTP and WebSocket Server Library",
+ "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit, PBC\", \"fnd\", role = \"cph\"), person(\"Hector\", \"Corrada Bravo\", role = \"ctb\"), person(\"Jeroen\", \"Ooms\", role = \"ctb\"), person(\"Andrzej\", \"Krzemienski\", role = \"cph\", comment = \"optional.hpp\"), person(\"libuv project contributors\", role = \"cph\", comment = \"libuv library, see src/libuv/AUTHORS file\"), person(\"Joyent, Inc. and other Node contributors\", role = \"cph\", comment = \"libuv library, see src/libuv/AUTHORS file; and http-parser library, see src/http-parser/AUTHORS file\"), person(\"Niels\", \"Provos\", role = \"cph\", comment = \"libuv subcomponent: tree.h\"), person(\"Internet Systems Consortium, Inc.\", role = \"cph\", comment = \"libuv subcomponent: inet_pton and inet_ntop, contained in src/libuv/src/inet.c\"), person(\"Alexander\", \"Chemeris\", role = \"cph\", comment = \"libuv subcomponent: stdint-msvc2008.h (from msinttypes)\"), person(\"Google, Inc.\", role = \"cph\", comment = \"libuv subcomponent: pthread-fixes.c\"), person(\"Sony Mobile Communcations AB\", role = \"cph\", comment = \"libuv subcomponent: pthread-fixes.c\"), person(\"Berkeley Software Design Inc.\", role = \"cph\", comment = \"libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c\"), person(\"Kenneth\", \"MacKay\", role = \"cph\", comment = \"libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c\"), person(\"Emergya (Cloud4all, FP7/2007-2013, grant agreement no 289016)\", role = \"cph\", comment = \"libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c\"), person(\"Steve\", \"Reid\", role = \"aut\", comment = \"SHA-1 implementation\"), person(\"James\", \"Brown\", role = \"aut\", comment = \"SHA-1 implementation\"), person(\"Bob\", \"Trower\", role = \"aut\", comment = \"base64 implementation\"), person(\"Alexander\", \"Peslyak\", role = \"aut\", comment = \"MD5 implementation\"), person(\"Trantor Standard Systems\", role = \"cph\", comment = \"base64 implementation\"), person(\"Igor\", \"Sysoev\", role = \"cph\", comment = \"http-parser\") )",
+ "Description": "Provides low-level socket and protocol support for handling HTTP and WebSocket requests directly from within R. It is primarily intended as a building block for other packages, rather than making it particularly easy to create complete web applications using httpuv alone. httpuv is built on top of the libuv and http-parser C libraries, both of which were developed by Joyent, Inc. (See LICENSE file for libuv and http-parser license information.)",
+ "License": "GPL (>= 2) | file LICENSE",
+ "URL": "https://github.com/rstudio/httpuv",
+ "BugReports": "https://github.com/rstudio/httpuv/issues",
+ "Depends": [
+ "R (>= 2.15.1)"
+ ],
+ "Imports": [
+ "later (>= 0.8.0)",
+ "promises",
+ "R6",
+ "Rcpp (>= 1.0.7)",
+ "utils"
+ ],
+ "Suggests": [
+ "callr",
+ "curl",
+ "testthat",
+ "websocket"
+ ],
+ "LinkingTo": [
+ "later",
+ "Rcpp"
+ ],
+ "Encoding": "UTF-8",
+ "RoxygenNote": "7.3.1",
+ "SystemRequirements": "GNU make, zlib",
+ "Collate": "'RcppExports.R' 'httpuv.R' 'random_port.R' 'server.R' 'staticServer.R' 'static_paths.R' 'utils.R'",
+ "NeedsCompilation": "yes",
+ "Author": "Joe Cheng [aut], Winston Chang [aut, cre], Posit, PBC fnd [cph], Hector Corrada Bravo [ctb], Jeroen Ooms [ctb], Andrzej Krzemienski [cph] (optional.hpp), libuv project contributors [cph] (libuv library, see src/libuv/AUTHORS file), Joyent, Inc. and other Node contributors [cph] (libuv library, see src/libuv/AUTHORS file; and http-parser library, see src/http-parser/AUTHORS file), Niels Provos [cph] (libuv subcomponent: tree.h), Internet Systems Consortium, Inc. [cph] (libuv subcomponent: inet_pton and inet_ntop, contained in src/libuv/src/inet.c), Alexander Chemeris [cph] (libuv subcomponent: stdint-msvc2008.h (from msinttypes)), Google, Inc. [cph] (libuv subcomponent: pthread-fixes.c), Sony Mobile Communcations AB [cph] (libuv subcomponent: pthread-fixes.c), Berkeley Software Design Inc. [cph] (libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c), Kenneth MacKay [cph] (libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c), Emergya (Cloud4all, FP7/2007-2013, grant agreement no 289016) [cph] (libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c), Steve Reid [aut] (SHA-1 implementation), James Brown [aut] (SHA-1 implementation), Bob Trower [aut] (base64 implementation), Alexander Peslyak [aut] (MD5 implementation), Trantor Standard Systems [cph] (base64 implementation), Igor Sysoev [cph] (http-parser)",
+ "Maintainer": "Winston Chang ",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "isoband": {
+ "Package": "isoband",
+ "Version": "0.2.7",
+ "Source": "Repository",
+ "Title": "Generate Isolines and Isobands from Regularly Spaced Elevation Grids",
+ "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\"), 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\", , \"thomasp85@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-5147-4711\")) )",
+ "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",
+ "BugReports": "https://github.com/r-lib/isoband/issues",
+ "Imports": [
+ "grid",
+ "utils"
+ ],
+ "Suggests": [
+ "covr",
+ "ggplot2",
+ "knitr",
+ "magick",
+ "microbenchmark",
+ "rmarkdown",
+ "sf",
+ "testthat",
+ "xml2"
+ ],
+ "VignetteBuilder": "knitr",
+ "Config/Needs/website": "tidyverse/tidytemplate",
+ "Config/testthat/edition": "3",
+ "Encoding": "UTF-8",
+ "RoxygenNote": "7.2.3",
+ "SystemRequirements": "C++11",
+ "NeedsCompilation": "yes",
+ "Author": "Hadley Wickham [aut, cre] (), Claus O. Wilke [aut] (Original author, ), Thomas Lin Pedersen [aut] ()",
+ "Maintainer": "Hadley Wickham ",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "jsonify": {
+ "Package": "jsonify",
+ "Version": "1.2.2",
+ "Source": "Repository",
+ "Type": "Package",
+ "Title": "Convert Between 'R' Objects and Javascript Object Notation (JSON)",
+ "Date": "2022-11-10",
+ "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 (>= 3.3.0)"
+ ],
+ "SystemRequirements": "C++11",
+ "Imports": [
+ "Rcpp (>= 0.12.18)"
+ ],
+ "LinkingTo": [
+ "rapidjsonr (>= 1.2.0)",
+ "Rcpp"
+ ],
+ "RoxygenNote": "7.1.0",
+ "Suggests": [
+ "covr",
+ "testthat",
+ "knitr",
+ "rmarkdown"
+ ],
+ "Encoding": "UTF-8",
+ "VignetteBuilder": "knitr",
+ "NeedsCompilation": "yes",
+ "Author": "David Cooley [aut, cre], Chris Muir [ctb], Brendan Knapp [ctb] ()",
+ "Maintainer": "David Cooley ",
+ "Repository": "CRAN"
+ },
+ "jsonlite": {
+ "Package": "jsonlite",
+ "Version": "1.8.9",
+ "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.2.3",
+ "Encoding": "UTF-8",
+ "NeedsCompilation": "yes",
+ "Author": "Jeroen Ooms [aut, cre] (), Duncan Temple Lang [ctb], Lloyd Hilaiel [cph] (author of bundled libyajl)",
+ "Repository": "CRAN"
+ },
+ "knitr": {
+ "Package": "knitr",
+ "Version": "1.50",
+ "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.51)",
+ "yaml (>= 2.1.19)"
+ ],
+ "Suggests": [
+ "bslib",
+ "codetools",
+ "DBI (>= 0.4-1)",
+ "digest",
+ "formatR",
+ "gifski",
+ "gridSVG",
+ "htmlwidgets (>= 0.7)",
+ "jpeg",
+ "JuliaCall (>= 0.11.1)",
+ "magick",
+ "litedown",
+ "markdown (>= 1.3)",
+ "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' '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.2",
+ "NeedsCompilation": "no",
+ "Author": "Yihui Xie [aut, cre] (, 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] (), 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] (), 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] (), 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] (), Posit Software, PBC [cph, fnd]",
+ "Maintainer": "Yihui Xie ",
+ "Repository": "CRAN"
+ },
+ "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": "CRAN"
+ },
+ "later": {
+ "Package": "later",
+ "Version": "1.4.1",
+ "Source": "Repository",
+ "Type": "Package",
+ "Title": "Utilities for Scheduling Functions to Execute Later with Event Loops",
+ "Authors@R": "c( person(\"Winston\", \"Chang\", role = c(\"aut\", \"cre\"), email = \"winston@posit.co\"), person(\"Joe\", \"Cheng\", role = c(\"aut\"), email = \"joe@posit.co\"), person(\"Charlie\", \"Gao\", role = c(\"aut\"), email = \"charlie.gao@shikokuchuo.net\", comment = c(ORCID = \"0000-0002-0750-061X\")), person(family = \"Posit Software, PBC\", role = \"cph\"), 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.",
+ "URL": "https://r-lib.github.io/later/, https://github.com/r-lib/later",
+ "BugReports": "https://github.com/r-lib/later/issues",
+ "License": "MIT + file LICENSE",
+ "Imports": [
+ "Rcpp (>= 0.12.9)",
+ "rlang"
+ ],
+ "LinkingTo": [
+ "Rcpp"
+ ],
+ "RoxygenNote": "7.3.2",
+ "Suggests": [
+ "knitr",
+ "nanonext",
+ "R6",
+ "rmarkdown",
+ "testthat (>= 2.1.0)"
+ ],
+ "VignetteBuilder": "knitr",
+ "Encoding": "UTF-8",
+ "NeedsCompilation": "yes",
+ "Author": "Winston Chang [aut, cre], Joe Cheng [aut], Charlie Gao [aut] (), Posit Software, PBC [cph], Marcus Geelnard [ctb, cph] (TinyCThread library, https://tinycthread.github.io/), Evan Nemerson [ctb, cph] (TinyCThread library, https://tinycthread.github.io/)",
+ "Maintainer": "Winston Chang