check_r(): change dependencies default from TRUE to NA, so
hard dependencies (Depends, Imports, LinkingTo) are installed by
default while Suggests are excluded (#XXX).check_r() error reporting: traverse the full error chain via
rlang::cnd_message(e, inherit = TRUE) instead of only showing the
top-level message; strip ANSI escape codes to avoid printing garbage in
the log.check_r() by storing
error details per-package and reporting them once in the final summary.compute_simpson_index.feat:
collapse_sparse_rows(): collapse sparse matrix rows by group while preserving sparse output and row order.compute_lisi(): simplify nearest-neighbor backend selection by removing the hnsw path and using a more conservative "auto" strategy that prefers the package's exact backend only for very small problems.parallelize_fun(): refactor verbose multi-core execution to collect results dynamically while preserving input order and progress reporting across uneven workloads.log_message(): allow explicit verbose to override the global option and normalize captured cli alerts emitted inside expr.fix:
normalization() against degenerate inputs so zero-variance or zero-sum vectors return stable values instead of NaN/Inf.matrix_to_table() sparse keep_zero = TRUE handling to match dense output more reliably and make equal-magnitude sorting deterministic.table_to_matrix() to aggregate duplicate row/column coordinates consistently in both dense and sparse output paths.pak::pkg_install()/pak::pkg_remove() with explicit library handling.docs:
collapse_sparse_rows().compute_lisi() and log_message() documentation to match the current arguments and defaults.tests:
collapse_sparse_rows() edge cases, compute_lisi() backend consistency, captured cli messages in log_message(expr = ...), matrix conversion corner cases, parallelize_fun() ordering/export behavior, normalization on degenerate inputs, and startup suppression when verbose logging is disabled.feat:
compute_lisi(): compute per-cell Local Inverse Simpson's Index (LISI) scores for categorical variables.log_message(): add optional expr support to capture standard output, messages, and warnings from another expression and re-print them with log_message() formatting while returning the evaluated result.parallelize_fun():
"Error : Not a matrix.") and warnings during function execution in parallelize_fun() via stderr redirection and suppressWarnings().progress_bar_width to parallelize_fun() for direct progress bar width control; default width is now 10.fix:
parallelize_fun()
cores = 1: use output_list[i] <- list(result) instead of output_list[[i]] <- result to prevent NULL returns from shrinking the output list.parallel::detectCores(logical = FALSE) is unavailable or returns an invalid value, execution now falls back safely to at least one worker instead of failing.check_ci_env(): detect whether the current session should be treated as CI/pkgdown context; returns TRUE for interactive sessions and for GitHub Actions when GITHUB_ACTIONS=true and GITHUB_WORKFLOW=pkgdown (case-insensitive), otherwise returns FALSE.is_outlier(): detect outlier indices using median and MAD-based bounds (nmads, constant) with type = "both"|"lower"|"higher; NA values are also included in the returned index vector.check_pkg_status(): make the package/version checker available as a public API; it checks installation status in a target library (lib) and optionally verifies exact version match when version is provided.@examples for check_r() function.check_r(): check and install R packages from CRAN, Bioconductor, or GitHub; supports version pinning (pkg@version or pkg==version) and optional force reinstall; uses pak::pak() for installation with configurable lib and dependencies.remove_r(): check and remove installed R packages from the given library; uses pak::pkg_remove(); skips packages that are not installed and reports success or failure per package.add_pkg_file() dependency management: cli dependency is now added with correct comma separation, and both Imports and Suggests sections are automatically sorted alphabetically. The Suggests section is now enforced to follow Imports.add_pkg_file() flow: better metadata extraction/logging from DESCRIPTION, and smarter logo generation fallback when figlet fails. Generated package files now include @useDynLib only when src/ exists..onAttach() now shows package version, release date, and website link in both generated package files.matrix_to_table() C++ implementation: Improved dimnames handling using Rf_getAttrib and R_DimNamesSymbol for better compatibility. Enhanced keep_zero = TRUE logic to efficiently include all row/column combinations (including zeros) using unordered_set and unordered_map for optimized lookups.table_to_matrix() C++ implementation: Enhanced sparse matrix construction by ensuring zero values are not added to sparse matrices. Improved dimnames setting using Rf_setAttrib and R_DimNamesSymbol for better compatibility.parallelize_fun() function: Unified progress bar creation logic by removing conditional branches and using a single consistent format. Updated progress bar format string for better readability and consistency.get_namespace_fun() function.log_message() function: Added new "ask" message type for interactive user prompts. When message_type = "ask", the function uses utils::askYesNo() to prompt the user and returns TRUE for Yes, FALSE for No, and NA for Cancel.parallelize_fun() function: Improved progress bar status display in parallel processing mode. Now shows only the first item name/value with ellipsis ("…") instead of concatenating all chunk items, resulting in cleaner and more concise progress display.feat:
log_message() and add_pkg_file(): Converted private helper functions (prefixed with .) to public functions, improving code accessibility and maintainability. Functions affected include build_message(), validate_params(), output_message(), style_formatting(), plain_text_output(), get_caller_call(), extract_function_name(), make_color_style(), check_color(), and generate_content().docs:
@return documentation for thisutils_logo() and logo functions generated by add_pkg_file().timestamp_style parameter in log_message() function from TRUE to FALSE for cleaner default output.figlet() references to use HTTPS, addressing CRAN incoming NOTE.log_message() function: Added new plain_text parameter to suppress level, symbol, timestamp, and message type formatting while preserving color and multiline settings, allowing for cleaner text-only output.add_pkg_file() function: Enhanced message types and formatting, using more appropriate message types (warning, running) and improved file references in log messages.check_sparsity() function: Improved calculation logic by computing total counts upfront, avoiding redundant calculations for sparse and non-sparse matrices.normalization() function: Enhanced max_min and maximum methods by caching min/max values to avoid repeated calculations.parallelize_fun(): Replaced sapply() with vapply() for type-safe return values and optimized error handling logic.meanp(), sump(), votep()): Extracted validp variable to avoid repeated indexing and improved code efficiency.sump() function: Replaced loop-based calculation with vectorized operations for better performance.capitalize() and unnest_fun() functions: Replaced sapply() with vapply() for type safety.add_pkg_file() function: Now automatically checks for the existence of src directory and only adds @useDynLib directive when src folder is present in the package environment.log_message() function: Now automatically handles non-character objects (e.g., data.table, data.frame) by formatting them with capture.output(print(...)), allowing direct object input without manual string conversion.matrix_to_table() C++ implementation to iterate dgCMatrix slots directly, avoiding dense conversion and reducing memory/time cost on large sparse matrices.keep_zero/threshold semantics across C++/R: retain entries if abs(value) >= threshold; zeros are retained only when keep_zero = TRUE and threshold == 0.parallelize_fun() function: Added support for named vectors and vectors in progress display, showing current processing item names or values in the progress bar. Improved progress bar formatting with status information and enhanced parallel processing progress updates.add_pkg_file() and thisutils-package.R: Enhanced separator line display with grey color styling using cli::col_grey() for better visual consistency.add_pkg_file() function: Added automatic dependency checking to ensure cli package is included in DESCRIPTION file, and automatic pkgdown configuration checking to ensure proper package overview section setup.feat:
get_verbose() function: New exported function to get verbose option from global options or local arguments, providing better control over message display..onAttach() function: Now respects verbose settings and only displays startup messages when verbose mode is enabled, improving user experience.add_pkg_file() function: Generated .onAttach() function now includes verbose check using get_verbose(), ensuring consistency with package behavior.docs:
parse_inline_expressions().list_figlet_fonts() and rescale() functions.add_pkg_file() function: Simplified function parameters by removing manual parameter inputs and automatically extracting all package information from DESCRIPTION file. Enhanced error handling and improved logging messages.parallelize_fun() function with robust error handling: Added clean_result parameter to control automatic removal of failed results, and throw_error parameter to control detailed error message display. Functions now gracefully handle partial failures without stopping execution.parse_inline_expressions() function: High-performance inline expression parser that evaluates {} expressions while preserving CLI formatting markers like {.val ...}.log_message() function: Add new "running" message type with orange circle dotted symbol (◌) to indicate ongoing processes.wilkinsonp(), maximump(), minimump(), meanp(), votep(), and sump() for meta-analysis and multiple study result integration.max_depth() function to calculate the maximum depth of nested lists.add_pkg_file() function. Now, add_pkg_file() can automatically extract information of R package from DESCRIPTION file and save it in the ./R/ folder.str_wrap() function.feat:
purrr::map2() with mapply(), and delete purrr package in DESCRIPTION.methods::is() with inherits(), and delete methods package in DESCRIPTION.docs:
matrix_process() function.feat:
matrix_to_table() and table_to_matrix() functions for data conversion between matrix and table formats.sparse to return_sparse for as_matrix()docs: