From 3f393347468c72d0b6b209d30736d7b579b96223 Mon Sep 17 00:00:00 2001 From: ESCRI11 Date: Tue, 28 Oct 2025 23:12:15 +0100 Subject: [PATCH 01/11] feat: ds.mdPattern fct --- NAMESPACE | 1 + R/ds.mdPattern.R | 305 ++++++++++++++++++++++++++++++++++++ man/dot-pool_md_patterns.Rd | 20 +++ man/ds.mdPattern.Rd | 126 +++++++++++++++ 4 files changed, 452 insertions(+) create mode 100644 R/ds.mdPattern.R create mode 100644 man/dot-pool_md_patterns.Rd create mode 100644 man/ds.mdPattern.Rd diff --git a/NAMESPACE b/NAMESPACE index d1e89215f..d1d4bf6ae 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -62,6 +62,7 @@ export(ds.matrixDimnames) export(ds.matrixInvert) export(ds.matrixMult) export(ds.matrixTranspose) +export(ds.mdPattern) export(ds.mean) export(ds.meanByClass) export(ds.meanSdGp) diff --git a/R/ds.mdPattern.R b/R/ds.mdPattern.R new file mode 100644 index 000000000..e553b3f19 --- /dev/null +++ b/R/ds.mdPattern.R @@ -0,0 +1,305 @@ +#' +#' @title Display missing data patterns with disclosure control +#' @description This function is a client-side wrapper for the server-side mdPatternDS +#' function. It generates a missing data pattern matrix similar to mice::md.pattern but +#' with disclosure control applied to prevent revealing small cell counts. +#' @details The function calls the server-side mdPatternDS function which uses +#' mice::md.pattern to analyze missing data patterns. Patterns with counts below the +#' disclosure threshold (default: nfilter.tab = 3) are suppressed to maintain privacy. +#' +#' \strong{Output Format:} +#' - Each row represents a missing data pattern +#' - Pattern counts are shown in row names (e.g., "150", "25") +#' - Columns show 1 if the variable is observed, 0 if missing +#' - Last column shows the total number of missing values per pattern +#' - Last row shows the total number of missing values per variable +#' +#' \strong{Disclosure Control:} +#' +#' Suppressed patterns (count below threshold) are indicated by: +#' - Row name: "suppressed()" where N is the threshold +#' - All pattern values set to NA +#' - Summary row also suppressed to prevent back-calculation +#' +#' \strong{Pooling Behavior (type='combine'):} +#' +#' When pooling across studies, the function uses a \emph{conservative approach} +#' for disclosure control: +#' +#' 1. Identifies identical missing patterns across studies +#' 2. \strong{EXCLUDES suppressed patterns from pooling} - patterns suppressed in +#' ANY study are not included in the pooled count +#' 3. Sums counts only for non-suppressed identical patterns +#' 4. Re-validates pooled counts against disclosure threshold +#' +#' \strong{Important:} This conservative approach means: +#' - Pooled counts may be \emph{underestimates} if some studies had suppressed patterns +#' - This prevents disclosure through subtraction (e.g., if study A shows count=5 +#' and pool shows count=7, one could deduce study B has count=2, violating disclosure) +#' - Different patterns across studies are preserved separately in the pooled result +#' +#' @param x a character string specifying the name of a data frame or matrix on the +#' server-side containing the data to analyze. +#' @param type a character string specifying the output type. If 'split' (default), +#' returns separate patterns for each study. If 'combine', attempts to pool patterns +#' across studies. +#' @param datasources a list of \code{\link[DSI]{DSConnection-class}} objects obtained +#' after login. If the \code{datasources} argument is not specified, the default set of +#' connections will be used: see \code{\link[DSI]{datashield.connections_default}}. +#' @return For type='split': A list with one element per study, each containing: +#' \itemize{ +#' \item{pattern}{The missing data pattern matrix for that study} +#' \item{valid}{Logical indicating if all patterns meet disclosure requirements} +#' \item{message}{A message describing the validity status} +#' } +#' +#' For type='combine': A list containing: +#' \itemize{ +#' \item{pattern}{The pooled missing data pattern matrix across all studies} +#' \item{valid}{Logical indicating if all pooled patterns meet disclosure requirements} +#' \item{message}{A message describing the validity status} +#' } +#' @author Xavier Escribà montagut for DataSHIELD Development Team +#' @export +#' @examples +#' \dontrun{ +#' ## Version 6, for version 5 see the Wiki +#' +#' # Connecting to the Opal servers +#' +#' require('DSI') +#' require('DSOpal') +#' require('dsBaseClient') +#' +#' builder <- DSI::newDSLoginBuilder() +#' builder$append(server = "study1", +#' url = "http://192.168.56.100:8080/", +#' user = "administrator", password = "datashield_test&", +#' table = "CNSIM.CNSIM1", driver = "OpalDriver") +#' builder$append(server = "study2", +#' url = "http://192.168.56.100:8080/", +#' user = "administrator", password = "datashield_test&", +#' table = "CNSIM.CNSIM2", driver = "OpalDriver") +#' logindata <- builder$build() +#' +#' connections <- DSI::datashield.login(logins = logindata, assign = TRUE, symbol = "D") +#' +#' # Get missing data patterns for each study separately +#' patterns_split <- ds.mdPattern(x = "D", type = "split", datasources = connections) +#' +#' # View results for study1 +#' print(patterns_split$study1$pattern) +#' # var1 var2 var3 +#' # 150 1 1 1 0 <- 150 obs complete +#' # 25 0 1 1 1 <- 25 obs missing var1 +#' # 25 0 0 25 <- Summary: 25 missing per variable +#' +#' # Get pooled missing data patterns across studies +#' patterns_pooled <- ds.mdPattern(x = "D", type = "combine", datasources = connections) +#' print(patterns_pooled$pattern) +#' +#' # Example with suppressed patterns: +#' # If study1 has a pattern with count=2 (suppressed) and study2 has same pattern +#' # with count=5 (valid), the pooled result will show count=5 (conservative approach) +#' # A warning will indicate: "Pooled counts may underestimate the true total" +#' +#' # Clear the Datashield R sessions and logout +#' datashield.logout(connections) +#' } +#' +ds.mdPattern <- function(x = NULL, type = 'split', datasources = NULL){ + + # Look for DS connections + if(is.null(datasources)){ + datasources <- datashield.connections_find() + } + + # Ensure datasources is a list of DSConnection-class + if(!(is.list(datasources) && all(unlist(lapply(datasources, function(d) {methods::is(d,"DSConnection")}))))){ + stop("The 'datasources' were expected to be a list of DSConnection-class objects", call.=FALSE) + } + + if(is.null(x)){ + stop("Please provide the name of a data frame or matrix!", call.=FALSE) + } + + # Get study names + study_names <- names(datasources) + + # Call the server side function + cally <- call("mdPatternDS", x) + results <- DSI::datashield.aggregate(datasources, cally) + + # Process results based on type + if(type == "split"){ + # Return individual study results + return(results) + + } else if(type == "combine"){ + # Pool results across studies + + # First check if any study has invalid patterns + any_invalid <- any(sapply(results, function(r) !r$valid)) + invalid_studies <- names(results)[sapply(results, function(r) !r$valid)] + + if(any_invalid){ + warning( + "Disclosure control: Some studies have suppressed patterns (below threshold).\n", + " Studies with suppressed patterns: ", paste(invalid_studies, collapse=", "), "\n", + " These patterns are EXCLUDED from pooling to prevent disclosure.\n", + " Pooled counts may underestimate the true total.", + call. = FALSE + ) + } + + # Extract patterns from each study + patterns_list <- lapply(results, function(r) r$pattern) + + # Check if all patterns have the same variables (columns) + n_vars <- sapply(patterns_list, ncol) + if(length(unique(n_vars)) > 1){ + stop("Cannot pool patterns: studies have different numbers of variables", call.=FALSE) + } + + var_names <- colnames(patterns_list[[1]]) + if(length(patterns_list) > 1){ + for(i in 2:length(patterns_list)){ + if(!identical(colnames(patterns_list[[i]]), var_names)){ + warning("Variable names differ across studies. Pooling by position.") + break + } + } + } + + # Pool the patterns + pooled_pattern <- .pool_md_patterns(patterns_list, study_names) + + # Check validity of pooled results + # Get threshold from first study's results or use a default check + nfilter.tab <- getOption("default.nfilter.tab") + if(is.null(nfilter.tab)) nfilter.tab <- 3 + + n_patterns <- nrow(pooled_pattern) - 1 + pooled_valid <- TRUE + + if(n_patterns > 0){ + # Pattern counts are in row names + pattern_counts <- as.numeric(rownames(pooled_pattern)[1:n_patterns]) + pattern_counts <- pattern_counts[!is.na(pattern_counts) & pattern_counts > 0] + + if(any(pattern_counts < nfilter.tab)){ + pooled_valid <- FALSE + } + } + + pooled_message <- ifelse(pooled_valid, + "Valid: all pooled pattern counts meet disclosure requirements", + "Some pooled pattern counts may be below threshold") + + return(list( + pattern = pooled_pattern, + valid = pooled_valid, + message = pooled_message, + studies = study_names + )) + + } else { + stop("Argument 'type' must be either 'split' or 'combine'", call.=FALSE) + } +} + +#' @title Pool missing data patterns across studies +#' @description Internal function to pool md.pattern results from multiple studies +#' @param patterns_list List of pattern matrices from each study +#' @param study_names Names of the studies +#' @return Pooled pattern matrix +#' @keywords internal +.pool_md_patterns <- function(patterns_list, study_names){ + + # Initialize with first study's pattern structure + pooled <- patterns_list[[1]] + n_vars <- ncol(pooled) + n_rows <- nrow(pooled) - 1 # Exclude summary row + + # Create a list to store unique patterns + unique_patterns <- list() + pattern_counts <- list() + + # Process each study + for(i in seq_along(patterns_list)){ + pattern <- patterns_list[[i]] + study_n_patterns <- nrow(pattern) - 1 + + if(study_n_patterns > 0){ + for(j in 1:study_n_patterns){ + # Get pattern (columns show 1/0 for observed/missing) + pat_vector <- pattern[j, 1:(n_vars-1)] + # Pattern count is in row name + pat_count_str <- rownames(pattern)[j] + pat_count <- suppressWarnings(as.numeric(pat_count_str)) + + # Skip if suppressed (non-numeric row name like "suppressed(<3)") + if(is.na(pat_count)){ + next + } + + # Convert pattern to string for comparison + pat_string <- paste(pat_vector, collapse="_") + + # Check if this pattern already exists + if(pat_string %in% names(unique_patterns)){ + # Add to existing count + pattern_counts[[pat_string]] <- pattern_counts[[pat_string]] + pat_count + } else { + # New pattern + unique_patterns[[pat_string]] <- pat_vector + pattern_counts[[pat_string]] <- pat_count + } + } + } + } + + # Build pooled pattern matrix + if(length(unique_patterns) == 0){ + # No valid patterns + pooled[1:n_rows, ] <- NA + } else { + # Sort patterns by count (descending) + sorted_idx <- order(unlist(pattern_counts), decreasing = TRUE) + sorted_patterns <- unique_patterns[sorted_idx] + sorted_counts <- pattern_counts[sorted_idx] + + # Create new pooled matrix + n_pooled_patterns <- length(sorted_patterns) + pooled <- matrix(NA, nrow = n_pooled_patterns + 1, ncol = n_vars) + colnames(pooled) <- colnames(patterns_list[[1]]) + + # Set row names (counts for patterns, empty for summary) + row_names <- c(as.character(unlist(sorted_counts)), "") + rownames(pooled) <- row_names + + # Fill in patterns + for(i in 1:n_pooled_patterns){ + pooled[i, 1:(n_vars-1)] <- sorted_patterns[[i]] + # Calculate number of missing for this pattern + pooled[i, n_vars] <- sum(sorted_patterns[[i]] == 0) + } + } + + # Calculate summary row (total missing per variable) + # Sum across studies + summary_row <- rep(0, n_vars) + for(i in seq_along(patterns_list)){ + study_summary <- patterns_list[[i]][nrow(patterns_list[[i]]), ] + # Only add if not suppressed + if(!all(is.na(study_summary))){ + summary_row <- summary_row + ifelse(is.na(study_summary), 0, study_summary) + } + } + + # Add summary row + pooled[nrow(pooled), ] <- summary_row + + return(pooled) +} + diff --git a/man/dot-pool_md_patterns.Rd b/man/dot-pool_md_patterns.Rd new file mode 100644 index 000000000..baabf3e92 --- /dev/null +++ b/man/dot-pool_md_patterns.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ds.mdPattern.R +\name{.pool_md_patterns} +\alias{.pool_md_patterns} +\title{Pool missing data patterns across studies} +\usage{ +.pool_md_patterns(patterns_list, study_names) +} +\arguments{ +\item{patterns_list}{List of pattern matrices from each study} + +\item{study_names}{Names of the studies} +} +\value{ +Pooled pattern matrix +} +\description{ +Internal function to pool md.pattern results from multiple studies +} +\keyword{internal} diff --git a/man/ds.mdPattern.Rd b/man/ds.mdPattern.Rd new file mode 100644 index 000000000..ffda06e0b --- /dev/null +++ b/man/ds.mdPattern.Rd @@ -0,0 +1,126 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ds.mdPattern.R +\name{ds.mdPattern} +\alias{ds.mdPattern} +\title{Display missing data patterns with disclosure control} +\usage{ +ds.mdPattern(x = NULL, type = "split", datasources = NULL) +} +\arguments{ +\item{x}{a character string specifying the name of a data frame or matrix on the +server-side containing the data to analyze.} + +\item{type}{a character string specifying the output type. If 'split' (default), +returns separate patterns for each study. If 'combine', attempts to pool patterns +across studies.} + +\item{datasources}{a list of \code{\link[DSI]{DSConnection-class}} objects obtained +after login. If the \code{datasources} argument is not specified, the default set of +connections will be used: see \code{\link[DSI]{datashield.connections_default}}.} +} +\value{ +For type='split': A list with one element per study, each containing: +\itemize{ + \item{pattern}{The missing data pattern matrix for that study} + \item{valid}{Logical indicating if all patterns meet disclosure requirements} + \item{message}{A message describing the validity status} +} + +For type='combine': A list containing: +\itemize{ + \item{pattern}{The pooled missing data pattern matrix across all studies} + \item{valid}{Logical indicating if all pooled patterns meet disclosure requirements} + \item{message}{A message describing the validity status} +} +} +\description{ +This function is a client-side wrapper for the server-side mdPatternDS +function. It generates a missing data pattern matrix similar to mice::md.pattern but +with disclosure control applied to prevent revealing small cell counts. +} +\details{ +The function calls the server-side mdPatternDS function which uses +mice::md.pattern to analyze missing data patterns. Patterns with counts below the +disclosure threshold (default: nfilter.tab = 3) are suppressed to maintain privacy. + +\strong{Output Format:} +- Each row represents a missing data pattern +- Pattern counts are shown in row names (e.g., "150", "25") +- Columns show 1 if the variable is observed, 0 if missing +- Last column shows the total number of missing values per pattern +- Last row shows the total number of missing values per variable + +\strong{Disclosure Control:} + +Suppressed patterns (count below threshold) are indicated by: +- Row name: "suppressed()" where N is the threshold +- All pattern values set to NA +- Summary row also suppressed to prevent back-calculation + +\strong{Pooling Behavior (type='combine'):} + +When pooling across studies, the function uses a \emph{conservative approach} +for disclosure control: + +1. Identifies identical missing patterns across studies +2. \strong{EXCLUDES suppressed patterns from pooling} - patterns suppressed in + ANY study are not included in the pooled count +3. Sums counts only for non-suppressed identical patterns +4. Re-validates pooled counts against disclosure threshold + +\strong{Important:} This conservative approach means: +- Pooled counts may be \emph{underestimates} if some studies had suppressed patterns +- This prevents disclosure through subtraction (e.g., if study A shows count=5 + and pool shows count=7, one could deduce study B has count=2, violating disclosure) +- Different patterns across studies are preserved separately in the pooled result +} +\examples{ +\dontrun{ + ## Version 6, for version 5 see the Wiki + + # Connecting to the Opal servers + + require('DSI') + require('DSOpal') + require('dsBaseClient') + + builder <- DSI::newDSLoginBuilder() + builder$append(server = "study1", + url = "http://192.168.56.100:8080/", + user = "administrator", password = "datashield_test&", + table = "CNSIM.CNSIM1", driver = "OpalDriver") + builder$append(server = "study2", + url = "http://192.168.56.100:8080/", + user = "administrator", password = "datashield_test&", + table = "CNSIM.CNSIM2", driver = "OpalDriver") + logindata <- builder$build() + + connections <- DSI::datashield.login(logins = logindata, assign = TRUE, symbol = "D") + + # Get missing data patterns for each study separately + patterns_split <- ds.mdPattern(x = "D", type = "split", datasources = connections) + + # View results for study1 + print(patterns_split$study1$pattern) + # var1 var2 var3 + # 150 1 1 1 0 <- 150 obs complete + # 25 0 1 1 1 <- 25 obs missing var1 + # 25 0 0 25 <- Summary: 25 missing per variable + + # Get pooled missing data patterns across studies + patterns_pooled <- ds.mdPattern(x = "D", type = "combine", datasources = connections) + print(patterns_pooled$pattern) + + # Example with suppressed patterns: + # If study1 has a pattern with count=2 (suppressed) and study2 has same pattern + # with count=5 (valid), the pooled result will show count=5 (conservative approach) + # A warning will indicate: "Pooled counts may underestimate the true total" + + # Clear the Datashield R sessions and logout + datashield.logout(connections) +} + +} +\author{ +Xavier Escribà montagut for DataSHIELD Development Team +} From e2c190d407aa78f2d6a38f06fc6367de77da69c9 Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Thu, 30 Oct 2025 12:26:49 +0000 Subject: [PATCH 02/11] Documentation update --- man/ds.colnames.Rd | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/man/ds.colnames.Rd b/man/ds.colnames.Rd index e73910812..9460a567f 100644 --- a/man/ds.colnames.Rd +++ b/man/ds.colnames.Rd @@ -9,20 +9,20 @@ ds.colnames(x = NULL, datasources = NULL) \arguments{ \item{x}{a character string providing the name of the input data frame or matrix.} -\item{datasources}{a list of \code{\link[DSI]{DSConnection-class}} objects obtained after login. +\item{datasources}{a list of \code{\link[DSI]{DSConnection-class}} objects obtained after login. If the \code{datasources} argument is not specified the default set of connections will be used: see \code{\link[DSI]{datashield.connections_default}}.} } \value{ -\code{ds.colnames} returns the column names of +\code{ds.colnames} returns the column names of the specified server-side data frame or matrix. } \description{ -Retrieves column names of an R object on the server-side. +Retrieves column names of an R object on the server-side. This function is similar to R function \code{colnames}. } \details{ -The input is restricted to the object of type \code{data.frame} or \code{matrix}. +The input is restricted to the object of type \code{data.frame} or \code{matrix}. Server function called: \code{colnamesDS} } @@ -37,28 +37,28 @@ Server function called: \code{colnamesDS} require('dsBaseClient') builder <- DSI::newDSLoginBuilder() - builder$append(server = "study1", - url = "http://192.168.56.100:8080/", - user = "administrator", password = "datashield_test&", + builder$append(server = "study1", + url = "http://192.168.56.100:8080/", + user = "administrator", password = "datashield_test&", table = "CNSIM.CNSIM1", driver = "OpalDriver") - builder$append(server = "study2", - url = "http://192.168.56.100:8080/", - user = "administrator", password = "datashield_test&", + builder$append(server = "study2", + url = "http://192.168.56.100:8080/", + user = "administrator", password = "datashield_test&", table = "CNSIM.CNSIM2", driver = "OpalDriver") builder$append(server = "study3", - url = "http://192.168.56.100:8080/", - user = "administrator", password = "datashield_test&", + url = "http://192.168.56.100:8080/", + user = "administrator", password = "datashield_test&", table = "CNSIM.CNSIM3", driver = "OpalDriver") logindata <- builder$build() - + # Log onto the remote Opal training servers - connections <- DSI::datashield.login(logins = logindata, assign = TRUE, symbol = "D") + connections <- DSI::datashield.login(logins = logindata, assign = TRUE, symbol = "D") # Getting column names of the R objects stored in the server-side ds.colnames(x = "D", datasources = connections[1]) #only the first server ("study1") is used # Clear the Datashield R sessions and logout - datashield.logout(connections) + datashield.logout(connections) } } \seealso{ From 43d90e41d4b625fb1248fa683afe20e6c4c69b0e Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Fri, 31 Oct 2025 14:42:00 +0000 Subject: [PATCH 03/11] Changes required for dsBaseClient to be submitted to CRAN --- DESCRIPTION | 4 ---- R/ds.asFactor.R | 2 +- man/ds.asFactor.Rd | 2 +- tests/testthat.R | 3 ++- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index f87cb256d..f2d7fb091 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -36,10 +36,6 @@ Authors@R: c(person(given = "Paul", family = "Avraam", role = c("aut"), comment = c(ORCID = "0000-0001-8908-2441")), - person(given = "Demetris", - family = "Avraam", - role = c("aut"), - comment = c(ORCID = "0000-0001-8908-2441")), person(given = "Yannick", family = "Marcon", role = c("aut"), diff --git a/R/ds.asFactor.R b/R/ds.asFactor.R index 476f00f85..8e5fbd090 100644 --- a/R/ds.asFactor.R +++ b/R/ds.asFactor.R @@ -48,7 +48,7 @@ #' \code{baseline.level = 1} and \code{forced.factor.levels = c(1,2,3,4,5)}. #' The input vector is converted to the following matrix of dummy variables: #' -#' \tabular{rrrrr}{ +#' \tabular{rrrr}{ #' \strong{DV2} \tab \strong{DV3} \tab \strong{DV4} \tab \strong{DV5} \cr #' 0 \tab 0 \tab 0 \tab 0\cr #' 1 \tab 0 \tab 0 \tab 0\cr diff --git a/man/ds.asFactor.Rd b/man/ds.asFactor.Rd index c412df383..24125632b 100644 --- a/man/ds.asFactor.Rd +++ b/man/ds.asFactor.Rd @@ -95,7 +95,7 @@ If we set the argument \code{fixed.dummy.vars = TRUE}, \code{baseline.level = 1} and \code{forced.factor.levels = c(1,2,3,4,5)}. The input vector is converted to the following matrix of dummy variables: -\tabular{rrrrr}{ +\tabular{rrrr}{ \strong{DV2} \tab \strong{DV3} \tab \strong{DV4} \tab \strong{DV5} \cr 0 \tab 0 \tab 0 \tab 0\cr 1 \tab 0 \tab 0 \tab 0\cr diff --git a/tests/testthat.R b/tests/testthat.R index 3e6bbe151..389ee66c5 100644 --- a/tests/testthat.R +++ b/tests/testthat.R @@ -9,4 +9,5 @@ library(testthat) library(dsBaseClient) -test_check("dsBaseClient") +if (identical(Sys.getenv("NOT_CRAN"), "true")) + test_check("dsBaseClient") From 19f82d0872dc82e4a6f9caecd71b9a70928e17cc Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Thu, 13 Nov 2025 12:19:36 +0000 Subject: [PATCH 04/11] Update of 'rock' & 'rsever' images --- docker-compose_armadillo.yml | 5 +++-- tests/docker/armadillo/standard/config/application.yml | 8 +------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/docker-compose_armadillo.yml b/docker-compose_armadillo.yml index 26bd8b855..64503958e 100644 --- a/docker-compose_armadillo.yml +++ b/docker-compose_armadillo.yml @@ -3,7 +3,7 @@ services: hostname: armadillo ports: - 8080:8080 - image: datashield/armadillo_citest:5.9.4 + image: datashield/armadillo_citest:5.11.0 environment: LOGGING_CONFIG: 'classpath:logback-file.xml' AUDIT_LOG_PATH: '/app/logs/audit.log' @@ -16,6 +16,7 @@ services: default: hostname: default - image: datashield/rock-omicron-karma-permissive:devel + image: datashield/rock-panda-matilda:latest +# image: datashield/rserver-panda-lamda:devel environment: DEBUG: "FALSE" diff --git a/tests/docker/armadillo/standard/config/application.yml b/tests/docker/armadillo/standard/config/application.yml index 12b78ec82..07aa7d50f 100644 --- a/tests/docker/armadillo/standard/config/application.yml +++ b/tests/docker/armadillo/standard/config/application.yml @@ -14,17 +14,11 @@ armadillo: # oidc-admin-user: user@yourdomain.org profiles: - name: default - image: datashield/rock-omicron-karma:devel + image: datashield/rock-panda-matilda:latest port: 8085 host: default package-whitelist: # Packages for 'permissive' - dsBase - - dsMediation - - dsMTLBase - - dsSurvival - - dsTidyverse - - dsExposome - - dsOmics - resourcer function-blacklist: [ ] options: From d1927597cf6ed8fee2010381a483a3a26487b369 Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Thu, 13 Nov 2025 15:16:27 +0000 Subject: [PATCH 05/11] Updated packages --- docker-compose_armadillo.yml | 2 +- docker-compose_opal.yml | 2 +- tests/docker/armadillo/standard/config/application.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-compose_armadillo.yml b/docker-compose_armadillo.yml index 64503958e..37c44cdae 100644 --- a/docker-compose_armadillo.yml +++ b/docker-compose_armadillo.yml @@ -16,7 +16,7 @@ services: default: hostname: default - image: datashield/rock-panda-matilda:latest + image: datashield/rock-quebrada-lamda:latest # image: datashield/rserver-panda-lamda:devel environment: DEBUG: "FALSE" diff --git a/docker-compose_opal.yml b/docker-compose_opal.yml index 1a048f515..4eb4b6085 100644 --- a/docker-compose_opal.yml +++ b/docker-compose_opal.yml @@ -20,6 +20,6 @@ services: - MONGO_INITDB_ROOT_USERNAME=root - MONGO_INITDB_ROOT_PASSWORD=foobar rock: - image: datashield/rock-lemon-donkey-permissive:draft + image: datashield/rock-quebrada-lamda-permissive:draft environment: DEBUG: "FALSE" diff --git a/tests/docker/armadillo/standard/config/application.yml b/tests/docker/armadillo/standard/config/application.yml index 07aa7d50f..54e90c36a 100644 --- a/tests/docker/armadillo/standard/config/application.yml +++ b/tests/docker/armadillo/standard/config/application.yml @@ -14,7 +14,7 @@ armadillo: # oidc-admin-user: user@yourdomain.org profiles: - name: default - image: datashield/rock-panda-matilda:latest + image: datashield/rock-quebrada-lamda-permissive:latest port: 8085 host: default package-whitelist: # Packages for 'permissive' From f17fd8aeafc789889c0e53f2db43ff495ef1051a Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Thu, 13 Nov 2025 15:20:27 +0000 Subject: [PATCH 06/11] Fixed type --- docker-compose_opal.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose_opal.yml b/docker-compose_opal.yml index 4eb4b6085..a62dec679 100644 --- a/docker-compose_opal.yml +++ b/docker-compose_opal.yml @@ -20,6 +20,6 @@ services: - MONGO_INITDB_ROOT_USERNAME=root - MONGO_INITDB_ROOT_PASSWORD=foobar rock: - image: datashield/rock-quebrada-lamda-permissive:draft + image: datashield/rock-quebrada-lamda-permissive:latest environment: DEBUG: "FALSE" From 20c12de0968f1a9d5586dcfaac54ed123a8afc78 Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Thu, 13 Nov 2025 17:06:31 +0000 Subject: [PATCH 07/11] Updated for new responses for 'foobar' --- tests/testthat/test-arg-ds.foobar.R | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tests/testthat/test-arg-ds.foobar.R b/tests/testthat/test-arg-ds.foobar.R index 36d5ac977..2139dc798 100644 --- a/tests/testthat/test-arg-ds.foobar.R +++ b/tests/testthat/test-arg-ds.foobar.R @@ -29,10 +29,9 @@ test_that("setup", { test_that("NULL connections", { calltext <- call("fooBarDS") if (ds.test_env$driver == "ArmadilloDriver") { - expect_error(datashield.aggregate(conns=NULL, expr=calltext), "no applicable method for `@` applied to an object of class \"NULL\"", fixed=TRUE) -# expect_error(datashield.aggregate(conns=NULL, expr=calltext), "trying to get slot \"name\" from an object of a basic class (\"NULL\") with no slots", fixed=TRUE) + expect_error(datashield.aggregate(conns=NULL, expr=calltext), "unable to find an inherited method for function ‘dsIsAsync’ for signature ‘conn = \"NULL\"’", fixed=TRUE) } else if (ds.test_env$driver == "OpalDriver") { - expect_error(datashield.aggregate(conns=NULL, expr=calltext), "no applicable method for `@` applied to an object of class \"NULL\"", fixed=TRUE) + expect_error(datashield.aggregate(conns=NULL, expr=calltext), "unable to find an inherited method for function ‘dsIsAsync’ for signature ‘conn = \"NULL\"’", fixed=TRUE) } else { fail(message = "Unknown driver type", info = ds.test_env$driver) } @@ -70,10 +69,9 @@ test_that("non existent aggregate foobarDS", { test_that("NULL connections", { calltext <- call("fooBarDS") if (ds.test_env$driver == "ArmadilloDriver") { - expect_error(datashield.assign(conns=NULL, symbol="new_obj", value=calltext), "no applicable method for `@` applied to an object of class \"NULL\"", fixed=TRUE) -# expect_error(datashield.assign(conns=NULL, symbol="new_obj", value=calltext), "trying to get slot \"name\" from an object of a basic class (\"NULL\") with no slots", fixed=TRUE) + expect_error(datashield.assign(conns=NULL, symbol="new_obj", value=calltext), "unable to find an inherited method for function ‘dsIsAsync’ for signature ‘conn = \"NULL\"’", fixed=TRUE) } else if (ds.test_env$driver == "OpalDriver") { - expect_error(datashield.assign(conns=NULL, symbol="new_obj", value=calltext), "no applicable method for `@` applied to an object of class \"NULL\"", fixed=TRUE) + expect_error(datashield.assign(conns=NULL, symbol="new_obj", value=calltext), "unable to find an inherited method for function ‘dsIsAsync’ for signature ‘conn = \"NULL\"’", fixed=TRUE) } else { fail(message = "Unknown driver type", info = ds.test_env$driver) } From d33b4c41592524c0bc0202ac2c2822a9b83d05e5 Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Fri, 14 Nov 2025 05:42:19 +0000 Subject: [PATCH 08/11] Fixed quotes --- tests/testthat/test-arg-ds.foobar.R | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/testthat/test-arg-ds.foobar.R b/tests/testthat/test-arg-ds.foobar.R index 2139dc798..19f959f28 100644 --- a/tests/testthat/test-arg-ds.foobar.R +++ b/tests/testthat/test-arg-ds.foobar.R @@ -29,9 +29,9 @@ test_that("setup", { test_that("NULL connections", { calltext <- call("fooBarDS") if (ds.test_env$driver == "ArmadilloDriver") { - expect_error(datashield.aggregate(conns=NULL, expr=calltext), "unable to find an inherited method for function ‘dsIsAsync’ for signature ‘conn = \"NULL\"’", fixed=TRUE) + expect_error(datashield.aggregate(conns=NULL, expr=calltext), "unable to find an inherited method for function 'dsIsAsync' for signature 'conn = \"NULL\"'", fixed=TRUE) } else if (ds.test_env$driver == "OpalDriver") { - expect_error(datashield.aggregate(conns=NULL, expr=calltext), "unable to find an inherited method for function ‘dsIsAsync’ for signature ‘conn = \"NULL\"’", fixed=TRUE) + expect_error(datashield.aggregate(conns=NULL, expr=calltext), "unable to find an inherited method for function 'dsIsAsync' for signature 'conn = \"NULL\"'", fixed=TRUE) } else { fail(message = "Unknown driver type", info = ds.test_env$driver) } @@ -69,9 +69,9 @@ test_that("non existent aggregate foobarDS", { test_that("NULL connections", { calltext <- call("fooBarDS") if (ds.test_env$driver == "ArmadilloDriver") { - expect_error(datashield.assign(conns=NULL, symbol="new_obj", value=calltext), "unable to find an inherited method for function ‘dsIsAsync’ for signature ‘conn = \"NULL\"’", fixed=TRUE) + expect_error(datashield.assign(conns=NULL, symbol="new_obj", value=calltext), "unable to find an inherited method for function 'dsIsAsync' for signature 'conn = \"NULL\"'", fixed=TRUE) } else if (ds.test_env$driver == "OpalDriver") { - expect_error(datashield.assign(conns=NULL, symbol="new_obj", value=calltext), "unable to find an inherited method for function ‘dsIsAsync’ for signature ‘conn = \"NULL\"’", fixed=TRUE) + expect_error(datashield.assign(conns=NULL, symbol="new_obj", value=calltext), "unable to find an inherited method for function 'dsIsAsync' for signature 'conn = \"NULL\"'", fixed=TRUE) } else { fail(message = "Unknown driver type", info = ds.test_env$driver) } From 366e8c5c738e39725dc5958482320f64dbb4775f Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Fri, 14 Nov 2025 06:03:46 +0000 Subject: [PATCH 09/11] Fix to 'ds.mdPattern' document and documentation regeneration --- R/ds.mdPattern.R | 4 +- docs/404.html | 6 +- docs/LICENSE.html | 6 +- docs/authors.html | 18 +- docs/index.html | 13 +- docs/pkgdown.yml | 4 +- docs/reference/checkClass.html | 6 +- docs/reference/colPercent.html | 6 +- docs/reference/computeWeightedMeans.html | 6 +- docs/reference/dot-pool_md_patterns.html | 90 ++++++++ docs/reference/ds.Boole.html | 6 +- docs/reference/ds.abs.html | 6 +- docs/reference/ds.asCharacter.html | 6 +- docs/reference/ds.asDataMatrix.html | 6 +- docs/reference/ds.asFactor.html | 8 +- docs/reference/ds.asFactorSimple.html | 6 +- docs/reference/ds.asInteger.html | 6 +- docs/reference/ds.asList.html | 6 +- docs/reference/ds.asLogical.html | 6 +- docs/reference/ds.asMatrix.html | 6 +- docs/reference/ds.asNumeric.html | 6 +- docs/reference/ds.assign.html | 6 +- docs/reference/ds.auc.html | 6 +- docs/reference/ds.boxPlot.html | 6 +- docs/reference/ds.boxPlotGG.html | 6 +- .../ds.boxPlotGG_data_Treatment.html | 6 +- .../ds.boxPlotGG_data_Treatment_numeric.html | 6 +- docs/reference/ds.boxPlotGG_numeric.html | 6 +- docs/reference/ds.boxPlotGG_table.html | 6 +- docs/reference/ds.bp_standards.html | 6 +- docs/reference/ds.c.html | 6 +- docs/reference/ds.cbind.html | 6 +- docs/reference/ds.changeRefGroup.html | 6 +- docs/reference/ds.class.html | 6 +- docs/reference/ds.colnames.html | 28 +-- docs/reference/ds.completeCases.html | 6 +- docs/reference/ds.contourPlot.html | 6 +- docs/reference/ds.cor.html | 6 +- docs/reference/ds.corTest.html | 6 +- docs/reference/ds.cov.html | 6 +- docs/reference/ds.dataFrame.html | 6 +- docs/reference/ds.dataFrameFill.html | 6 +- docs/reference/ds.dataFrameSort.html | 6 +- docs/reference/ds.dataFrameSubset.html | 6 +- docs/reference/ds.densityGrid.html | 6 +- docs/reference/ds.dim.html | 6 +- docs/reference/ds.dmtC2S.html | 6 +- docs/reference/ds.elspline.html | 6 +- docs/reference/ds.exists.html | 6 +- docs/reference/ds.exp.html | 6 +- docs/reference/ds.extractQuantiles.html | 6 +- docs/reference/ds.forestplot.html | 6 +- docs/reference/ds.gamlss.html | 6 +- docs/reference/ds.getWGSR.html | 6 +- docs/reference/ds.glm.html | 6 +- docs/reference/ds.glmPredict.html | 6 +- docs/reference/ds.glmSLMA.html | 6 +- docs/reference/ds.glmSummary.html | 6 +- docs/reference/ds.glmerSLMA.html | 6 +- docs/reference/ds.heatmapPlot.html | 6 +- docs/reference/ds.hetcor.html | 6 +- docs/reference/ds.histogram.html | 6 +- docs/reference/ds.igb_standards.html | 6 +- docs/reference/ds.isNA.html | 6 +- docs/reference/ds.isValid.html | 6 +- docs/reference/ds.kurtosis.html | 6 +- docs/reference/ds.length.html | 6 +- docs/reference/ds.levels.html | 6 +- docs/reference/ds.lexis.html | 6 +- docs/reference/ds.list.html | 6 +- .../reference/ds.listClientsideFunctions.html | 6 +- docs/reference/ds.listDisclosureSettings.html | 6 +- docs/reference/ds.listOpals.html | 6 +- .../reference/ds.listServersideFunctions.html | 6 +- docs/reference/ds.lmerSLMA.html | 6 +- docs/reference/ds.log.html | 6 +- docs/reference/ds.look.html | 6 +- docs/reference/ds.ls.html | 6 +- docs/reference/ds.lspline.html | 6 +- docs/reference/ds.make.html | 6 +- docs/reference/ds.matrix.html | 6 +- docs/reference/ds.matrixDet.html | 6 +- docs/reference/ds.matrixDet.report.html | 6 +- docs/reference/ds.matrixDiag.html | 6 +- docs/reference/ds.matrixDimnames.html | 6 +- docs/reference/ds.matrixInvert.html | 6 +- docs/reference/ds.matrixMult.html | 6 +- docs/reference/ds.matrixTranspose.html | 6 +- docs/reference/ds.mdPattern.html | 205 ++++++++++++++++++ docs/reference/ds.mean.html | 6 +- docs/reference/ds.meanByClass.html | 6 +- docs/reference/ds.meanSdGp.html | 6 +- docs/reference/ds.merge.html | 6 +- docs/reference/ds.message.html | 6 +- docs/reference/ds.metadata.html | 6 +- docs/reference/ds.mice.html | 6 +- docs/reference/ds.names.html | 6 +- docs/reference/ds.ns.html | 6 +- docs/reference/ds.numNA.html | 6 +- docs/reference/ds.qlspline.html | 6 +- docs/reference/ds.quantileMean.html | 6 +- docs/reference/ds.rBinom.html | 6 +- docs/reference/ds.rNorm.html | 6 +- docs/reference/ds.rPois.html | 6 +- docs/reference/ds.rUnif.html | 6 +- docs/reference/ds.ranksSecure.html | 6 +- docs/reference/ds.rbind.html | 6 +- docs/reference/ds.reShape.html | 6 +- docs/reference/ds.recodeLevels.html | 6 +- docs/reference/ds.recodeValues.html | 6 +- docs/reference/ds.rep.html | 6 +- docs/reference/ds.replaceNA.html | 6 +- docs/reference/ds.rm.html | 6 +- docs/reference/ds.rowColCalc.html | 6 +- docs/reference/ds.sample.html | 6 +- docs/reference/ds.scatterPlot.html | 6 +- docs/reference/ds.seq.html | 6 +- docs/reference/ds.setDefaultOpals.html | 6 +- docs/reference/ds.setSeed.html | 6 +- docs/reference/ds.skewness.html | 6 +- docs/reference/ds.sqrt.html | 6 +- docs/reference/ds.subset.html | 6 +- docs/reference/ds.subsetByClass.html | 6 +- docs/reference/ds.summary.html | 6 +- docs/reference/ds.table.html | 6 +- docs/reference/ds.table1D.html | 6 +- docs/reference/ds.table2D.html | 6 +- docs/reference/ds.tapply.assign.html | 6 +- docs/reference/ds.tapply.html | 6 +- docs/reference/ds.testObjExists.html | 6 +- docs/reference/ds.unList.html | 6 +- docs/reference/ds.unique.html | 6 +- docs/reference/ds.var.html | 6 +- docs/reference/ds.vectorCalc.html | 6 +- docs/reference/extract.html | 6 +- docs/reference/getPooledMean.html | 6 +- docs/reference/getPooledVar.html | 6 +- docs/reference/glmChecks.html | 6 +- docs/reference/index.html | 10 +- docs/reference/isAssigned.html | 6 +- docs/reference/isDefined.html | 6 +- docs/reference/logical2int.html | 6 +- docs/reference/meanByClassHelper0a.html | 6 +- docs/reference/meanByClassHelper0b.html | 6 +- docs/reference/meanByClassHelper1.html | 6 +- docs/reference/meanByClassHelper2.html | 6 +- docs/reference/meanByClassHelper3.html | 6 +- docs/reference/meanByClassHelper4.html | 6 +- docs/reference/rowPercent.html | 6 +- docs/reference/subsetHelper.html | 6 +- docs/sitemap.xml | 2 + man/ds.mdPattern.Rd | 4 +- 152 files changed, 764 insertions(+), 468 deletions(-) create mode 100644 docs/reference/dot-pool_md_patterns.html create mode 100644 docs/reference/ds.mdPattern.html diff --git a/R/ds.mdPattern.R b/R/ds.mdPattern.R index e553b3f19..af59498e2 100644 --- a/R/ds.mdPattern.R +++ b/R/ds.mdPattern.R @@ -47,14 +47,14 @@ #' after login. If the \code{datasources} argument is not specified, the default set of #' connections will be used: see \code{\link[DSI]{datashield.connections_default}}. #' @return For type='split': A list with one element per study, each containing: -#' \itemize{ +#' \describe{ #' \item{pattern}{The missing data pattern matrix for that study} #' \item{valid}{Logical indicating if all patterns meet disclosure requirements} #' \item{message}{A message describing the validity status} #' } #' #' For type='combine': A list containing: -#' \itemize{ +#' \describe{ #' \item{pattern}{The pooled missing data pattern matrix across all studies} #' \item{valid}{Logical indicating if all pooled patterns meet disclosure requirements} #' \item{message}{A message describing the validity status} diff --git a/docs/404.html b/docs/404.html index 761ee0b96..76de734e6 100644 --- a/docs/404.html +++ b/docs/404.html @@ -32,7 +32,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -73,12 +73,12 @@

Page not found (404)

-

Site built with pkgdown 2.1.3.

+

Site built with pkgdown 2.2.0.

diff --git a/docs/LICENSE.html b/docs/LICENSE.html index b495f5487..e721df6e3 100644 --- a/docs/LICENSE.html +++ b/docs/LICENSE.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -256,11 +256,11 @@

NA

-

Site built with pkgdown 2.1.3.

+

Site built with pkgdown 2.2.0.

diff --git a/docs/authors.html b/docs/authors.html index 177847f60..ea2155cdc 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -71,10 +71,6 @@

Authors and Citation

Demetris Avraam. Author.

-
  • -

    Demetris Avraam. Author. -

    -
  • Yannick Marcon. Author.

    @@ -104,14 +100,14 @@

    Citation

    -

    Burton P, Wilson R, Butters O, Ryser-Welch P, Westerberg A, Abarrategui L, Villegas-Diaz R, Avraam D, Avraam D, Marcon Y, Bishop T, Gaye A, Escribà-Montagut X, Wheater S (2025). +

    Burton P, Wilson R, Butters O, Ryser-Welch P, Westerberg A, Abarrategui L, Villegas-Diaz R, Avraam D, Marcon Y, Bishop T, Gaye A, Escribà-Montagut X, Wheater S (????). dsBaseClient: 'DataSHIELD' Client Side Base Functions. -R package version 6.3.4. +R package version 6.3.5-9000.

    @Manual{,
       title = {dsBaseClient: 'DataSHIELD' Client Side Base Functions},
    -  author = {Paul Burton and Rebecca Wilson and Olly Butters and Patricia Ryser-Welch and Alex Westerberg and Leire Abarrategui and Roberto Villegas-Diaz and Demetris Avraam and Demetris Avraam and Yannick Marcon and Tom Bishop and Amadou Gaye and Xavier Escribà-Montagut and Stuart Wheater},
    -  note = {R package version 6.3.4},
    +  author = {Paul Burton and Rebecca Wilson and Olly Butters and Patricia Ryser-Welch and Alex Westerberg and Leire Abarrategui and Roberto Villegas-Diaz and Demetris Avraam and Yannick Marcon and Tom Bishop and Amadou Gaye and Xavier Escribà-Montagut and Stuart Wheater},
    +  note = {R package version 6.3.5-9000},
     }

    Gaye A, Marcon Y, Isaeva J, LaFlamme P, Turner A, Jones E, Minion J, Boyd A, Newby C, Nuotio M, Wilson R, Butters O, Murtagh B, Demir I, Doiron D, Giepmans L, Wallace S, Budin-Ljøsne I, Schmidt C, Boffetta P, Boniol M, Bota M, Carter K, deKlerk N, Dibben C, Francis R, Hiekkalinna T, Hveem K, Kvaløy K, Millar S, Perry I, Peters A, Phillips C, Popham F, Raab G, Reischl E, Sheehan N, Waldenberger M, Perola M, van den Heuvel E, Macleod J, Knoppers B, Stolk R, Fortier I, Harris J, Woffenbuttel B, Murtagh M, Ferretti V, Burton P (2014). “DataSHIELD: taking the analysis to the data, not the data to the analysis.” @@ -168,11 +164,11 @@

    Citation

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/index.html b/docs/index.html index cc91e1494..f76381f01 100644 --- a/docs/index.html +++ b/docs/index.html @@ -33,7 +33,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -72,8 +72,8 @@

    Installationinstall.packages("remotes") remotes::install_github("datashield/dsBaseClient", "<BRANCH>") -# Install v6.3.4 with the following -remotes::install_github("datashield/dsBaseClient", "6.3.4") +# Install v6.3.5 with the following +remotes::install_github("datashield/dsBaseClient", "6.3.5")

    For a full list of development branches, checkout https://github.com/datashield/dsBaseClient/branches

    @@ -111,7 +111,7 @@

    About

    References

    -

    [1] Burton P, Wilson R, Butters O, Ryser-Welch P, Westerberg A, Abarrategui L, Villegas-Diaz R, Avraam D, Marcon Y, Bishop T, Gaye A, Escribà Montagut X, Wheater S (2025). dsBaseClient: ‘DataSHIELD’ Client Side Base Functions. R package version 6.3.4.

    +

    [1] Burton P, Wilson R, Butters O, Ryser-Welch P, Westerberg A, Abarrategui L, Villegas-Diaz R, Avraam D, Marcon Y, Bishop T, Gaye A, Escribà Montagut X, Wheater S (2025). dsBaseClient: ‘DataSHIELD’ Client Side Base Functions. R package version 6.3.5.

    [2] Gaye A, Marcon Y, Isaeva J, LaFlamme P, Turner A, Jones E, Minion J, Boyd A, Newby C, Nuotio M, Wilson R, Butters O, Murtagh B, Demir I, Doiron D, Giepmans L, Wallace S, Budin-Ljøsne I, Oliver Schmidt C, Boffetta P, Boniol M, Bota M, Carter K, deKlerk N, Dibben C, Francis R, Hiekkalinna T, Hveem K, Kvaløy K, Millar S, Perry I, Peters A, Phillips C, Popham F, Raab G, Reischl E, Sheehan N, Waldenberger M, Perola M, van den Heuvel E, Macleod J, Knoppers B, Stolk R, Fortier I, Harris J, Woffenbuttel B, Murtagh M, Ferretti V, Burton P (2014). “DataSHIELD: taking the analysis to the data, not the data to the analysis.” International Journal of Epidemiology, 43(6), 1929-1944. https://doi.org/10.1093/ije/dyu188.

    [3] Wilson R, W. Butters O, Avraam D, Baker J, Tedds J, Turner A, Murtagh M, R. Burton P (2017). “DataSHIELD – New Directions and Dimensions.” Data Science Journal, 16(21), 1-21. https://doi.org/10.5334/dsj-2017-021.

    [4] Avraam D, Wilson R, Aguirre Chan N, Banerjee S, Bishop T, Butters O, Cadman T, Cederkvist L, Duijts L, Escribà Montagut X, Garner H, Gonçalves G, González J, Haakma S, Hartlev M, Hasenauer J, Huth M, Hyde E, Jaddoe V, Marcon Y, Mayrhofer M, Molnar-Gabor F, Morgan A, Murtagh M, Nestor M, Nybo Andersen A, Parker S, Pinot de Moira A, Schwarz F, Strandberg-Larsen K, Swertz M, Welten M, Wheater S, Burton P (2024). “DataSHIELD: mitigating disclosure risk in a multi-site federated analysis platform.” Bioinformatics Advances, 5(1), 1-21. https://doi.org/10.1093/bioadv/vbaf046.

    @@ -154,7 +154,6 @@

    Developers

  • Leire Abarrategui
    Author
  • Roberto Villegas-Diaz
    Author
  • Demetris Avraam
    Author
  • -
  • Demetris Avraam
    Author
  • Yannick Marcon
    Author
  • Tom Bishop
    Author
  • Amadou Gaye
    Author
  • @@ -171,12 +170,12 @@

    Developers

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index ee4120e3d..87290833d 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -1,5 +1,5 @@ pandoc: 3.1.3 -pkgdown: 2.1.3 +pkgdown: 2.2.0 pkgdown_sha: ~ articles: {} -last_built: 2025-09-17T15:10Z +last_built: 2025-11-14T05:59Z diff --git a/docs/reference/checkClass.html b/docs/reference/checkClass.html index db54dc45a..3ccfc4dd7 100644 --- a/docs/reference/checkClass.html +++ b/docs/reference/checkClass.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000
    @@ -78,11 +78,11 @@

    Details

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/colPercent.html b/docs/reference/colPercent.html index f17b1a1fe..f4057a4fc 100644 --- a/docs/reference/colPercent.html +++ b/docs/reference/colPercent.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -76,11 +76,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/computeWeightedMeans.html b/docs/reference/computeWeightedMeans.html index 6aed4d331..075bcbd78 100644 --- a/docs/reference/computeWeightedMeans.html +++ b/docs/reference/computeWeightedMeans.html @@ -19,7 +19,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -84,11 +84,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/dot-pool_md_patterns.html b/docs/reference/dot-pool_md_patterns.html new file mode 100644 index 000000000..6ab173a63 --- /dev/null +++ b/docs/reference/dot-pool_md_patterns.html @@ -0,0 +1,90 @@ + +Pool missing data patterns across studies — .pool_md_patterns • dsBaseClient + + +
    +
    + + + +
    +
    + + +
    +

    Internal function to pool md.pattern results from multiple studies

    +
    + +
    +
    .pool_md_patterns(patterns_list, study_names)
    +
    + +
    +

    Arguments

    + + +
    patterns_list
    +

    List of pattern matrices from each study

    + + +
    study_names
    +

    Names of the studies

    + +
    +
    +

    Value

    +

    Pooled pattern matrix

    +
    + +
    + +
    + + +
    + +
    +

    Site built with pkgdown 2.2.0.

    +
    + +
    + + + + + + + + diff --git a/docs/reference/ds.Boole.html b/docs/reference/ds.Boole.html index b3e3b55e8..c048a7c57 100644 --- a/docs/reference/ds.Boole.html +++ b/docs/reference/ds.Boole.html @@ -20,7 +20,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -200,11 +200,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.abs.html b/docs/reference/ds.abs.html index d986834af..1ea400369 100644 --- a/docs/reference/ds.abs.html +++ b/docs/reference/ds.abs.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -150,11 +150,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.asCharacter.html b/docs/reference/ds.asCharacter.html index 9b2b1fdaf..5cd2add91 100644 --- a/docs/reference/ds.asCharacter.html +++ b/docs/reference/ds.asCharacter.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -132,11 +132,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.asDataMatrix.html b/docs/reference/ds.asDataMatrix.html index eb7b66e38..4047f2d44 100644 --- a/docs/reference/ds.asDataMatrix.html +++ b/docs/reference/ds.asDataMatrix.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -135,11 +135,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.asFactor.html b/docs/reference/ds.asFactor.html index a2db6d261..01c06a1b2 100644 --- a/docs/reference/ds.asFactor.html +++ b/docs/reference/ds.asFactor.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -144,7 +144,7 @@

    Details

    If we set the argument fixed.dummy.vars = TRUE, baseline.level = 1 and forced.factor.levels = c(1,2,3,4,5). The input vector is converted to the following matrix of dummy variables:

    -
    DV2DV3DV4DV50
    00010
    00000
    00100
    00100
    01000
    00010
    00010

    For the same example if the baseline.level = 3 then the matrix is:

    +
    DV2DV3DV4DV5
    0000
    1000
    0000
    0100
    0010
    0010
    0000
    0100
    0010
    0001

    For the same example if the baseline.level = 3 then the matrix is:

    DV1DV2DV4DV5
    1000
    0100
    1000
    0000
    0010
    0010
    1000
    0000
    0010
    0001

    In the first instance the first row of the matrix has zeros in all entries indicating that the first data point belongs to level 1 (as the baseline level is equal to 1). The second row has 1 at the first (DV2) column and zeros elsewhere, @@ -229,11 +229,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.asFactorSimple.html b/docs/reference/ds.asFactorSimple.html index 32283795b..57359dce4 100644 --- a/docs/reference/ds.asFactorSimple.html +++ b/docs/reference/ds.asFactorSimple.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -103,11 +103,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.asInteger.html b/docs/reference/ds.asInteger.html index 0bb6cce03..a8627c315 100644 --- a/docs/reference/ds.asInteger.html +++ b/docs/reference/ds.asInteger.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -148,11 +148,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.asList.html b/docs/reference/ds.asList.html index 45437c4b3..d96e01750 100644 --- a/docs/reference/ds.asList.html +++ b/docs/reference/ds.asList.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -133,11 +133,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.asLogical.html b/docs/reference/ds.asLogical.html index 58658647e..0e7f466c9 100644 --- a/docs/reference/ds.asLogical.html +++ b/docs/reference/ds.asLogical.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -134,11 +134,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.asMatrix.html b/docs/reference/ds.asMatrix.html index c961e2584..2fdb38cc1 100644 --- a/docs/reference/ds.asMatrix.html +++ b/docs/reference/ds.asMatrix.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -136,11 +136,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.asNumeric.html b/docs/reference/ds.asNumeric.html index 76ec51363..92568451f 100644 --- a/docs/reference/ds.asNumeric.html +++ b/docs/reference/ds.asNumeric.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -147,11 +147,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.assign.html b/docs/reference/ds.assign.html index af6b3e020..9147ef7dc 100644 --- a/docs/reference/ds.assign.html +++ b/docs/reference/ds.assign.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -131,11 +131,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.auc.html b/docs/reference/ds.auc.html index 2c93a3083..5cb42031f 100644 --- a/docs/reference/ds.auc.html +++ b/docs/reference/ds.auc.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -89,11 +89,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.boxPlot.html b/docs/reference/ds.boxPlot.html index c7b9a1e0b..c45fad727 100644 --- a/docs/reference/ds.boxPlot.html +++ b/docs/reference/ds.boxPlot.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -113,11 +113,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.boxPlotGG.html b/docs/reference/ds.boxPlotGG.html index 1d5456390..6fcb7dfe1 100644 --- a/docs/reference/ds.boxPlotGG.html +++ b/docs/reference/ds.boxPlotGG.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -108,11 +108,11 @@

    Value

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.boxPlotGG_data_Treatment.html b/docs/reference/ds.boxPlotGG_data_Treatment.html index 4ad0dbdc6..f67256075 100644 --- a/docs/reference/ds.boxPlotGG_data_Treatment.html +++ b/docs/reference/ds.boxPlotGG_data_Treatment.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -95,11 +95,11 @@

    Value

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.boxPlotGG_data_Treatment_numeric.html b/docs/reference/ds.boxPlotGG_data_Treatment_numeric.html index 4e760a434..3ef53fd40 100644 --- a/docs/reference/ds.boxPlotGG_data_Treatment_numeric.html +++ b/docs/reference/ds.boxPlotGG_data_Treatment_numeric.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -75,11 +75,11 @@

    Value

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.boxPlotGG_numeric.html b/docs/reference/ds.boxPlotGG_numeric.html index a2f69f988..1c398f12b 100644 --- a/docs/reference/ds.boxPlotGG_numeric.html +++ b/docs/reference/ds.boxPlotGG_numeric.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -91,11 +91,11 @@

    Value

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.boxPlotGG_table.html b/docs/reference/ds.boxPlotGG_table.html index 46f7ed910..0e413ec3a 100644 --- a/docs/reference/ds.boxPlotGG_table.html +++ b/docs/reference/ds.boxPlotGG_table.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -106,11 +106,11 @@

    Value

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.bp_standards.html b/docs/reference/ds.bp_standards.html index e3ab71fd8..632874234 100644 --- a/docs/reference/ds.bp_standards.html +++ b/docs/reference/ds.bp_standards.html @@ -20,7 +20,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -126,11 +126,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.c.html b/docs/reference/ds.c.html index d15251bad..8ca8947e5 100644 --- a/docs/reference/ds.c.html +++ b/docs/reference/ds.c.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -132,11 +132,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.cbind.html b/docs/reference/ds.cbind.html index 91ef0d49a..056fd6956 100644 --- a/docs/reference/ds.cbind.html +++ b/docs/reference/ds.cbind.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -206,11 +206,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.changeRefGroup.html b/docs/reference/ds.changeRefGroup.html index 30b39d214..582977b3c 100644 --- a/docs/reference/ds.changeRefGroup.html +++ b/docs/reference/ds.changeRefGroup.html @@ -19,7 +19,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -199,11 +199,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.class.html b/docs/reference/ds.class.html index 7906dc578..a8f801c70 100644 --- a/docs/reference/ds.class.html +++ b/docs/reference/ds.class.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -130,11 +130,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.colnames.html b/docs/reference/ds.colnames.html index 64853c41a..8b3e9edf9 100644 --- a/docs/reference/ds.colnames.html +++ b/docs/reference/ds.colnames.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -94,28 +94,28 @@

    Examples

    require('dsBaseClient') builder <- DSI::newDSLoginBuilder() - builder$append(server = "study1", - url = "http://192.168.56.100:8080/", - user = "administrator", password = "datashield_test&", + builder$append(server = "study1", + url = "http://192.168.56.100:8080/", + user = "administrator", password = "datashield_test&", table = "CNSIM.CNSIM1", driver = "OpalDriver") - builder$append(server = "study2", - url = "http://192.168.56.100:8080/", - user = "administrator", password = "datashield_test&", + builder$append(server = "study2", + url = "http://192.168.56.100:8080/", + user = "administrator", password = "datashield_test&", table = "CNSIM.CNSIM2", driver = "OpalDriver") builder$append(server = "study3", - url = "http://192.168.56.100:8080/", - user = "administrator", password = "datashield_test&", + url = "http://192.168.56.100:8080/", + user = "administrator", password = "datashield_test&", table = "CNSIM.CNSIM3", driver = "OpalDriver") logindata <- builder$build() - + # Log onto the remote Opal training servers - connections <- DSI::datashield.login(logins = logindata, assign = TRUE, symbol = "D") + connections <- DSI::datashield.login(logins = logindata, assign = TRUE, symbol = "D") # Getting column names of the R objects stored in the server-side ds.colnames(x = "D", datasources = connections[1]) #only the first server ("study1") is used # Clear the Datashield R sessions and logout - datashield.logout(connections) + datashield.logout(connections) } # } @@ -127,11 +127,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.completeCases.html b/docs/reference/ds.completeCases.html index 6fa86c83f..a9ff0c0d9 100644 --- a/docs/reference/ds.completeCases.html +++ b/docs/reference/ds.completeCases.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -147,11 +147,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.contourPlot.html b/docs/reference/ds.contourPlot.html index 2c4cd97d2..e0bb625d1 100644 --- a/docs/reference/ds.contourPlot.html +++ b/docs/reference/ds.contourPlot.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -203,11 +203,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.cor.html b/docs/reference/ds.cor.html index 19251198b..887f0f96d 100644 --- a/docs/reference/ds.cor.html +++ b/docs/reference/ds.cor.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -156,11 +156,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.corTest.html b/docs/reference/ds.corTest.html index fdd369b9c..dc17c5845 100644 --- a/docs/reference/ds.corTest.html +++ b/docs/reference/ds.corTest.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -162,11 +162,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.cov.html b/docs/reference/ds.cov.html index 3637997c7..5e74651cf 100644 --- a/docs/reference/ds.cov.html +++ b/docs/reference/ds.cov.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -181,11 +181,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.dataFrame.html b/docs/reference/ds.dataFrame.html index 791095af2..b1c95ffc9 100644 --- a/docs/reference/ds.dataFrame.html +++ b/docs/reference/ds.dataFrame.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -199,11 +199,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.dataFrameFill.html b/docs/reference/ds.dataFrameFill.html index 7278740e1..0474ebc05 100644 --- a/docs/reference/ds.dataFrameFill.html +++ b/docs/reference/ds.dataFrameFill.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -150,11 +150,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.dataFrameSort.html b/docs/reference/ds.dataFrameSort.html index 99e75c797..68de8de47 100644 --- a/docs/reference/ds.dataFrameSort.html +++ b/docs/reference/ds.dataFrameSort.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -171,11 +171,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.dataFrameSubset.html b/docs/reference/ds.dataFrameSubset.html index 73448ea53..364804f49 100644 --- a/docs/reference/ds.dataFrameSubset.html +++ b/docs/reference/ds.dataFrameSubset.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -216,11 +216,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.densityGrid.html b/docs/reference/ds.densityGrid.html index 4390d2b43..0c6eb2028 100644 --- a/docs/reference/ds.densityGrid.html +++ b/docs/reference/ds.densityGrid.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -120,11 +120,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.dim.html b/docs/reference/ds.dim.html index 037e87c70..6194f824f 100644 --- a/docs/reference/ds.dim.html +++ b/docs/reference/ds.dim.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -167,11 +167,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.dmtC2S.html b/docs/reference/ds.dmtC2S.html index b0c531322..82588087d 100644 --- a/docs/reference/ds.dmtC2S.html +++ b/docs/reference/ds.dmtC2S.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -120,11 +120,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.elspline.html b/docs/reference/ds.elspline.html index b2a8d5d83..fcccde94a 100644 --- a/docs/reference/ds.elspline.html +++ b/docs/reference/ds.elspline.html @@ -20,7 +20,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -119,11 +119,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.exists.html b/docs/reference/ds.exists.html index f5db40ba5..dedbd6020 100644 --- a/docs/reference/ds.exists.html +++ b/docs/reference/ds.exists.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -138,11 +138,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.exp.html b/docs/reference/ds.exp.html index eff914133..e374038c1 100644 --- a/docs/reference/ds.exp.html +++ b/docs/reference/ds.exp.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -132,11 +132,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.extractQuantiles.html b/docs/reference/ds.extractQuantiles.html index 0984ace64..6feb3123e 100644 --- a/docs/reference/ds.extractQuantiles.html +++ b/docs/reference/ds.extractQuantiles.html @@ -26,7 +26,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -176,11 +176,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.forestplot.html b/docs/reference/ds.forestplot.html index 8ad597e4d..00815834e 100644 --- a/docs/reference/ds.forestplot.html +++ b/docs/reference/ds.forestplot.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -118,11 +118,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.gamlss.html b/docs/reference/ds.gamlss.html index 6ea9d0609..26aafb587 100644 --- a/docs/reference/ds.gamlss.html +++ b/docs/reference/ds.gamlss.html @@ -23,7 +23,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -215,11 +215,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.getWGSR.html b/docs/reference/ds.getWGSR.html index 2b697ccb4..22a4217d7 100644 --- a/docs/reference/ds.getWGSR.html +++ b/docs/reference/ds.getWGSR.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -204,11 +204,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.glm.html b/docs/reference/ds.glm.html index 651c41e04..d22661357 100644 --- a/docs/reference/ds.glm.html +++ b/docs/reference/ds.glm.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -427,11 +427,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.glmPredict.html b/docs/reference/ds.glmPredict.html index 2d4434a01..3293386c5 100644 --- a/docs/reference/ds.glmPredict.html +++ b/docs/reference/ds.glmPredict.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -227,11 +227,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.glmSLMA.html b/docs/reference/ds.glmSLMA.html index d5ab72ff0..f69f44556 100644 --- a/docs/reference/ds.glmSLMA.html +++ b/docs/reference/ds.glmSLMA.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -493,11 +493,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.glmSummary.html b/docs/reference/ds.glmSummary.html index 5bacf7ad5..f8587472c 100644 --- a/docs/reference/ds.glmSummary.html +++ b/docs/reference/ds.glmSummary.html @@ -20,7 +20,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -154,11 +154,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.glmerSLMA.html b/docs/reference/ds.glmerSLMA.html index ccc7ec131..86b780cde 100644 --- a/docs/reference/ds.glmerSLMA.html +++ b/docs/reference/ds.glmerSLMA.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -379,11 +379,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.heatmapPlot.html b/docs/reference/ds.heatmapPlot.html index b45a3e6f6..90d22717e 100644 --- a/docs/reference/ds.heatmapPlot.html +++ b/docs/reference/ds.heatmapPlot.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -199,11 +199,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.hetcor.html b/docs/reference/ds.hetcor.html index 2373f7117..ddae1c958 100644 --- a/docs/reference/ds.hetcor.html +++ b/docs/reference/ds.hetcor.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -124,11 +124,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.histogram.html b/docs/reference/ds.histogram.html index 329bbf7aa..c601fe884 100644 --- a/docs/reference/ds.histogram.html +++ b/docs/reference/ds.histogram.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -190,11 +190,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.igb_standards.html b/docs/reference/ds.igb_standards.html index 1f04c7bbb..d59ea6746 100644 --- a/docs/reference/ds.igb_standards.html +++ b/docs/reference/ds.igb_standards.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -141,11 +141,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.isNA.html b/docs/reference/ds.isNA.html index 7fa98292c..5ffc9ab24 100644 --- a/docs/reference/ds.isNA.html +++ b/docs/reference/ds.isNA.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -131,11 +131,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.isValid.html b/docs/reference/ds.isValid.html index 3ad491a01..fa089373a 100644 --- a/docs/reference/ds.isValid.html +++ b/docs/reference/ds.isValid.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -131,11 +131,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.kurtosis.html b/docs/reference/ds.kurtosis.html index 8c2012bea..0811beba0 100644 --- a/docs/reference/ds.kurtosis.html +++ b/docs/reference/ds.kurtosis.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -103,11 +103,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.length.html b/docs/reference/ds.length.html index f71fef07e..98475e726 100644 --- a/docs/reference/ds.length.html +++ b/docs/reference/ds.length.html @@ -19,7 +19,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -157,11 +157,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.levels.html b/docs/reference/ds.levels.html index c2f42b3c1..f626f0ea1 100644 --- a/docs/reference/ds.levels.html +++ b/docs/reference/ds.levels.html @@ -19,7 +19,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -133,11 +133,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.lexis.html b/docs/reference/ds.lexis.html index 2f5e87db8..4bf68a510 100644 --- a/docs/reference/ds.lexis.html +++ b/docs/reference/ds.lexis.html @@ -19,7 +19,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -298,11 +298,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.list.html b/docs/reference/ds.list.html index b6acfeb3c..f5484fc85 100644 --- a/docs/reference/ds.list.html +++ b/docs/reference/ds.list.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -129,11 +129,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.listClientsideFunctions.html b/docs/reference/ds.listClientsideFunctions.html index 46871aa7d..fd144a530 100644 --- a/docs/reference/ds.listClientsideFunctions.html +++ b/docs/reference/ds.listClientsideFunctions.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -86,11 +86,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.listDisclosureSettings.html b/docs/reference/ds.listDisclosureSettings.html index 205f07cfa..5b83dcad3 100644 --- a/docs/reference/ds.listDisclosureSettings.html +++ b/docs/reference/ds.listDisclosureSettings.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -162,11 +162,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.listOpals.html b/docs/reference/ds.listOpals.html index 977c9afc3..664e3630b 100644 --- a/docs/reference/ds.listOpals.html +++ b/docs/reference/ds.listOpals.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -80,11 +80,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.listServersideFunctions.html b/docs/reference/ds.listServersideFunctions.html index 9dd4dc556..a583b0ce0 100644 --- a/docs/reference/ds.listServersideFunctions.html +++ b/docs/reference/ds.listServersideFunctions.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -124,11 +124,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.lmerSLMA.html b/docs/reference/ds.lmerSLMA.html index acc1a8257..74f8b6b2c 100644 --- a/docs/reference/ds.lmerSLMA.html +++ b/docs/reference/ds.lmerSLMA.html @@ -19,7 +19,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -328,11 +328,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.log.html b/docs/reference/ds.log.html index 2380a59fe..244f01fd1 100644 --- a/docs/reference/ds.log.html +++ b/docs/reference/ds.log.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -138,11 +138,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.look.html b/docs/reference/ds.look.html index 398e30953..0dcac2c3c 100644 --- a/docs/reference/ds.look.html +++ b/docs/reference/ds.look.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -147,11 +147,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.ls.html b/docs/reference/ds.ls.html index 6fd23b812..e94bbd91f 100644 --- a/docs/reference/ds.ls.html +++ b/docs/reference/ds.ls.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -198,11 +198,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.lspline.html b/docs/reference/ds.lspline.html index 4b78e6ebb..5cab21c87 100644 --- a/docs/reference/ds.lspline.html +++ b/docs/reference/ds.lspline.html @@ -20,7 +20,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -116,11 +116,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.make.html b/docs/reference/ds.make.html index fc0980558..f09551cc1 100644 --- a/docs/reference/ds.make.html +++ b/docs/reference/ds.make.html @@ -19,7 +19,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -201,11 +201,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.matrix.html b/docs/reference/ds.matrix.html index 6301c538f..7c827a137 100644 --- a/docs/reference/ds.matrix.html +++ b/docs/reference/ds.matrix.html @@ -20,7 +20,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -246,11 +246,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.matrixDet.html b/docs/reference/ds.matrixDet.html index 09e6bab9a..7fb61c694 100644 --- a/docs/reference/ds.matrixDet.html +++ b/docs/reference/ds.matrixDet.html @@ -20,7 +20,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -164,11 +164,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.matrixDet.report.html b/docs/reference/ds.matrixDet.report.html index 4fdbd6b1f..1d3062f23 100644 --- a/docs/reference/ds.matrixDet.report.html +++ b/docs/reference/ds.matrixDet.report.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -152,11 +152,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.matrixDiag.html b/docs/reference/ds.matrixDiag.html index 84200fc85..de8a34719 100644 --- a/docs/reference/ds.matrixDiag.html +++ b/docs/reference/ds.matrixDiag.html @@ -19,7 +19,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -155,11 +155,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.matrixDimnames.html b/docs/reference/ds.matrixDimnames.html index 8cc27186a..088285597 100644 --- a/docs/reference/ds.matrixDimnames.html +++ b/docs/reference/ds.matrixDimnames.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -170,11 +170,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.matrixInvert.html b/docs/reference/ds.matrixInvert.html index 0937e4bd2..17725d886 100644 --- a/docs/reference/ds.matrixInvert.html +++ b/docs/reference/ds.matrixInvert.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -157,11 +157,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.matrixMult.html b/docs/reference/ds.matrixMult.html index 737b4cca5..a3d407fe4 100644 --- a/docs/reference/ds.matrixMult.html +++ b/docs/reference/ds.matrixMult.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -174,11 +174,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.matrixTranspose.html b/docs/reference/ds.matrixTranspose.html index 8e3dabe42..80cbda3f9 100644 --- a/docs/reference/ds.matrixTranspose.html +++ b/docs/reference/ds.matrixTranspose.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -159,11 +159,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.mdPattern.html b/docs/reference/ds.mdPattern.html new file mode 100644 index 000000000..3276f4087 --- /dev/null +++ b/docs/reference/ds.mdPattern.html @@ -0,0 +1,205 @@ + +Display missing data patterns with disclosure control — ds.mdPattern • dsBaseClient + + +
    +
    + + + +
    +
    + + +
    +

    This function is a client-side wrapper for the server-side mdPatternDS +function. It generates a missing data pattern matrix similar to mice::md.pattern but +with disclosure control applied to prevent revealing small cell counts.

    +
    + +
    +
    ds.mdPattern(x = NULL, type = "split", datasources = NULL)
    +
    + +
    +

    Arguments

    + + +
    x
    +

    a character string specifying the name of a data frame or matrix on the +server-side containing the data to analyze.

    + + +
    type
    +

    a character string specifying the output type. If 'split' (default), +returns separate patterns for each study. If 'combine', attempts to pool patterns +across studies.

    + + +
    datasources
    +

    a list of DSConnection-class objects obtained +after login. If the datasources argument is not specified, the default set of +connections will be used: see datashield.connections_default.

    + +
    +
    +

    Value

    +

    For type='split': A list with one element per study, each containing:

    pattern
    +

    The missing data pattern matrix for that study

    + +
    valid
    +

    Logical indicating if all patterns meet disclosure requirements

    + +
    message
    +

    A message describing the validity status

    + + +

    For type='combine': A list containing:

    pattern
    +

    The pooled missing data pattern matrix across all studies

    + +
    valid
    +

    Logical indicating if all pooled patterns meet disclosure requirements

    + +
    message
    +

    A message describing the validity status

    + + +
    +
    +

    Details

    +

    The function calls the server-side mdPatternDS function which uses +mice::md.pattern to analyze missing data patterns. Patterns with counts below the +disclosure threshold (default: nfilter.tab = 3) are suppressed to maintain privacy.

    +

    Output Format: +- Each row represents a missing data pattern +- Pattern counts are shown in row names (e.g., "150", "25") +- Columns show 1 if the variable is observed, 0 if missing +- Last column shows the total number of missing values per pattern +- Last row shows the total number of missing values per variable

    +

    Disclosure Control:

    +

    Suppressed patterns (count below threshold) are indicated by: +- Row name: "suppressed(<N>)" where N is the threshold +- All pattern values set to NA +- Summary row also suppressed to prevent back-calculation

    +

    Pooling Behavior (type='combine'):

    +

    When pooling across studies, the function uses a conservative approach +for disclosure control:

    +

    1. Identifies identical missing patterns across studies +2. EXCLUDES suppressed patterns from pooling - patterns suppressed in + ANY study are not included in the pooled count +3. Sums counts only for non-suppressed identical patterns +4. Re-validates pooled counts against disclosure threshold

    +

    Important: This conservative approach means: +- Pooled counts may be underestimates if some studies had suppressed patterns +- This prevents disclosure through subtraction (e.g., if study A shows count=5 + and pool shows count=7, one could deduce study B has count=2, violating disclosure) +- Different patterns across studies are preserved separately in the pooled result

    +
    +
    +

    Author

    +

    Xavier Escribà montagut for DataSHIELD Development Team

    +
    + +
    +

    Examples

    +
    if (FALSE) { # \dontrun{
    + ## Version 6, for version 5 see the Wiki
    +
    +  # Connecting to the Opal servers
    +
    +  require('DSI')
    +  require('DSOpal')
    +  require('dsBaseClient')
    +
    +  builder <- DSI::newDSLoginBuilder()
    +  builder$append(server = "study1",
    +                 url = "http://192.168.56.100:8080/",
    +                 user = "administrator", password = "datashield_test&",
    +                 table = "CNSIM.CNSIM1", driver = "OpalDriver")
    +  builder$append(server = "study2",
    +                 url = "http://192.168.56.100:8080/",
    +                 user = "administrator", password = "datashield_test&",
    +                 table = "CNSIM.CNSIM2", driver = "OpalDriver")
    +  logindata <- builder$build()
    +
    +  connections <- DSI::datashield.login(logins = logindata, assign = TRUE, symbol = "D")
    +
    +  # Get missing data patterns for each study separately
    +  patterns_split <- ds.mdPattern(x = "D", type = "split", datasources = connections)
    +
    +  # View results for study1
    +  print(patterns_split$study1$pattern)
    +  #      var1 var2 var3
    +  # 150    1    1    1  0    <- 150 obs complete
    +  #  25    0    1    1  1    <- 25 obs missing var1
    +  #       25    0    0 25    <- Summary: 25 missing per variable
    +
    +  # Get pooled missing data patterns across studies
    +  patterns_pooled <- ds.mdPattern(x = "D", type = "combine", datasources = connections)
    +  print(patterns_pooled$pattern)
    +
    +  # Example with suppressed patterns:
    +  # If study1 has a pattern with count=2 (suppressed) and study2 has same pattern 
    +  # with count=5 (valid), the pooled result will show count=5 (conservative approach)
    +  # A warning will indicate: "Pooled counts may underestimate the true total"
    +
    +  # Clear the Datashield R sessions and logout
    +  datashield.logout(connections)
    +} # }
    +
    +
    +
    +
    + +
    + + +
    + +
    +

    Site built with pkgdown 2.2.0.

    +
    + +
    + + + + + + + + diff --git a/docs/reference/ds.mean.html b/docs/reference/ds.mean.html index 5bac04db2..3bdb5ff08 100644 --- a/docs/reference/ds.mean.html +++ b/docs/reference/ds.mean.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -185,11 +185,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.meanByClass.html b/docs/reference/ds.meanByClass.html index 411ed7332..e005a1b79 100644 --- a/docs/reference/ds.meanByClass.html +++ b/docs/reference/ds.meanByClass.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -169,11 +169,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.meanSdGp.html b/docs/reference/ds.meanSdGp.html index ffc0c2bfb..5ea28f3d5 100644 --- a/docs/reference/ds.meanSdGp.html +++ b/docs/reference/ds.meanSdGp.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -214,11 +214,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.merge.html b/docs/reference/ds.merge.html index 1ad185efc..d0ca186da 100644 --- a/docs/reference/ds.merge.html +++ b/docs/reference/ds.merge.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -232,11 +232,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.message.html b/docs/reference/ds.message.html index bbbb5cd76..9696de74b 100644 --- a/docs/reference/ds.message.html +++ b/docs/reference/ds.message.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -144,11 +144,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.metadata.html b/docs/reference/ds.metadata.html index 64330a092..f1b34d6f3 100644 --- a/docs/reference/ds.metadata.html +++ b/docs/reference/ds.metadata.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -122,11 +122,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.mice.html b/docs/reference/ds.mice.html index 2bc5ccc73..11fdf6bce 100644 --- a/docs/reference/ds.mice.html +++ b/docs/reference/ds.mice.html @@ -25,7 +25,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -160,11 +160,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.names.html b/docs/reference/ds.names.html index aa35230ec..f228e9742 100644 --- a/docs/reference/ds.names.html +++ b/docs/reference/ds.names.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -142,11 +142,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.ns.html b/docs/reference/ds.ns.html index 1a30398fe..bc8dbd23a 100644 --- a/docs/reference/ds.ns.html +++ b/docs/reference/ds.ns.html @@ -19,7 +19,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -129,11 +129,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.numNA.html b/docs/reference/ds.numNA.html index 7cfea2cac..bd2b93cab 100644 --- a/docs/reference/ds.numNA.html +++ b/docs/reference/ds.numNA.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -127,11 +127,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.qlspline.html b/docs/reference/ds.qlspline.html index b5039387a..13976b635 100644 --- a/docs/reference/ds.qlspline.html +++ b/docs/reference/ds.qlspline.html @@ -20,7 +20,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -128,11 +128,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.quantileMean.html b/docs/reference/ds.quantileMean.html index 7f935afb7..3fa6e30ea 100644 --- a/docs/reference/ds.quantileMean.html +++ b/docs/reference/ds.quantileMean.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -146,11 +146,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.rBinom.html b/docs/reference/ds.rBinom.html index ea94d67c0..c7511c1ba 100644 --- a/docs/reference/ds.rBinom.html +++ b/docs/reference/ds.rBinom.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -198,11 +198,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.rNorm.html b/docs/reference/ds.rNorm.html index bdddcf80f..e6903438e 100644 --- a/docs/reference/ds.rNorm.html +++ b/docs/reference/ds.rNorm.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -213,11 +213,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.rPois.html b/docs/reference/ds.rPois.html index cd46f0a0f..14dac9faa 100644 --- a/docs/reference/ds.rPois.html +++ b/docs/reference/ds.rPois.html @@ -19,7 +19,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -188,11 +188,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.rUnif.html b/docs/reference/ds.rUnif.html index 5823f42ff..ad6f79f41 100644 --- a/docs/reference/ds.rUnif.html +++ b/docs/reference/ds.rUnif.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -219,11 +219,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.ranksSecure.html b/docs/reference/ds.ranksSecure.html index 963c254e4..23fcb1add 100644 --- a/docs/reference/ds.ranksSecure.html +++ b/docs/reference/ds.ranksSecure.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -278,11 +278,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.rbind.html b/docs/reference/ds.rbind.html index 6a117c6da..ff061994f 100644 --- a/docs/reference/ds.rbind.html +++ b/docs/reference/ds.rbind.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -171,11 +171,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.reShape.html b/docs/reference/ds.reShape.html index 069891e61..0fdfef116 100644 --- a/docs/reference/ds.reShape.html +++ b/docs/reference/ds.reShape.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -194,11 +194,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.recodeLevels.html b/docs/reference/ds.recodeLevels.html index 1272061bb..3ab8184d7 100644 --- a/docs/reference/ds.recodeLevels.html +++ b/docs/reference/ds.recodeLevels.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -144,11 +144,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.recodeValues.html b/docs/reference/ds.recodeValues.html index ef260dde7..d8e22c499 100644 --- a/docs/reference/ds.recodeValues.html +++ b/docs/reference/ds.recodeValues.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -132,11 +132,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.rep.html b/docs/reference/ds.rep.html index 71db19a6d..93314e204 100644 --- a/docs/reference/ds.rep.html +++ b/docs/reference/ds.rep.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -206,11 +206,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.replaceNA.html b/docs/reference/ds.replaceNA.html index 8fe3ba9a2..daf71fd1e 100644 --- a/docs/reference/ds.replaceNA.html +++ b/docs/reference/ds.replaceNA.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -170,11 +170,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.rm.html b/docs/reference/ds.rm.html index 7403ff28c..89577e4fe 100644 --- a/docs/reference/ds.rm.html +++ b/docs/reference/ds.rm.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -140,11 +140,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.rowColCalc.html b/docs/reference/ds.rowColCalc.html index bfbd73861..066ba937e 100644 --- a/docs/reference/ds.rowColCalc.html +++ b/docs/reference/ds.rowColCalc.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -143,11 +143,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.sample.html b/docs/reference/ds.sample.html index bd9e16792..c71ab1c0c 100644 --- a/docs/reference/ds.sample.html +++ b/docs/reference/ds.sample.html @@ -19,7 +19,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -234,11 +234,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.scatterPlot.html b/docs/reference/ds.scatterPlot.html index ae6518636..3157bbd6a 100644 --- a/docs/reference/ds.scatterPlot.html +++ b/docs/reference/ds.scatterPlot.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -222,11 +222,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.seq.html b/docs/reference/ds.seq.html index 08b34ac85..43f5826b1 100644 --- a/docs/reference/ds.seq.html +++ b/docs/reference/ds.seq.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -213,11 +213,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.setDefaultOpals.html b/docs/reference/ds.setDefaultOpals.html index 3b34696d1..6bc3c3382 100644 --- a/docs/reference/ds.setDefaultOpals.html +++ b/docs/reference/ds.setDefaultOpals.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -93,11 +93,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.setSeed.html b/docs/reference/ds.setSeed.html index eac16115c..8fbc6f9b5 100644 --- a/docs/reference/ds.setSeed.html +++ b/docs/reference/ds.setSeed.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -156,11 +156,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.skewness.html b/docs/reference/ds.skewness.html index ad9e9fa11..e47d41df8 100644 --- a/docs/reference/ds.skewness.html +++ b/docs/reference/ds.skewness.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -154,11 +154,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.sqrt.html b/docs/reference/ds.sqrt.html index c0f0612e9..68ba86664 100644 --- a/docs/reference/ds.sqrt.html +++ b/docs/reference/ds.sqrt.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -145,11 +145,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.subset.html b/docs/reference/ds.subset.html index ff9d08f2d..b6fe78dc0 100644 --- a/docs/reference/ds.subset.html +++ b/docs/reference/ds.subset.html @@ -19,7 +19,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -180,11 +180,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.subsetByClass.html b/docs/reference/ds.subsetByClass.html index b401a1562..f7327c760 100644 --- a/docs/reference/ds.subsetByClass.html +++ b/docs/reference/ds.subsetByClass.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -142,11 +142,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.summary.html b/docs/reference/ds.summary.html index b0990fab8..6e2e52122 100644 --- a/docs/reference/ds.summary.html +++ b/docs/reference/ds.summary.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -139,11 +139,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.table.html b/docs/reference/ds.table.html index bcd1b6127..a0a5b33f1 100644 --- a/docs/reference/ds.table.html +++ b/docs/reference/ds.table.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -284,11 +284,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.table1D.html b/docs/reference/ds.table1D.html index 354a9ef6d..649440ce4 100644 --- a/docs/reference/ds.table1D.html +++ b/docs/reference/ds.table1D.html @@ -19,7 +19,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -160,11 +160,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.table2D.html b/docs/reference/ds.table2D.html index 88dfcfd52..9d95ea76a 100644 --- a/docs/reference/ds.table2D.html +++ b/docs/reference/ds.table2D.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -139,11 +139,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.tapply.assign.html b/docs/reference/ds.tapply.assign.html index 158d62457..d83d1884b 100644 --- a/docs/reference/ds.tapply.assign.html +++ b/docs/reference/ds.tapply.assign.html @@ -19,7 +19,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -212,11 +212,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.tapply.html b/docs/reference/ds.tapply.html index 99f9338ea..a6316cd94 100644 --- a/docs/reference/ds.tapply.html +++ b/docs/reference/ds.tapply.html @@ -19,7 +19,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -203,11 +203,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.testObjExists.html b/docs/reference/ds.testObjExists.html index 241fcd881..01ef0d5ed 100644 --- a/docs/reference/ds.testObjExists.html +++ b/docs/reference/ds.testObjExists.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -131,11 +131,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.unList.html b/docs/reference/ds.unList.html index c31ca868e..4b82e8d17 100644 --- a/docs/reference/ds.unList.html +++ b/docs/reference/ds.unList.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -149,11 +149,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.unique.html b/docs/reference/ds.unique.html index a887836e2..75ef9a19f 100644 --- a/docs/reference/ds.unique.html +++ b/docs/reference/ds.unique.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -122,11 +122,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.var.html b/docs/reference/ds.var.html index 109a1e78e..279099294 100644 --- a/docs/reference/ds.var.html +++ b/docs/reference/ds.var.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -153,11 +153,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/ds.vectorCalc.html b/docs/reference/ds.vectorCalc.html index 385c3eca9..751e36d5c 100644 --- a/docs/reference/ds.vectorCalc.html +++ b/docs/reference/ds.vectorCalc.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -120,11 +120,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/extract.html b/docs/reference/extract.html index ee10ef5d0..7a0c6c0eb 100644 --- a/docs/reference/extract.html +++ b/docs/reference/extract.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -72,11 +72,11 @@

    Details

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/getPooledMean.html b/docs/reference/getPooledMean.html index 5f25fe1c9..cdcccea02 100644 --- a/docs/reference/getPooledMean.html +++ b/docs/reference/getPooledMean.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -79,11 +79,11 @@

    Details

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/getPooledVar.html b/docs/reference/getPooledVar.html index b1136e230..7f31abe2f 100644 --- a/docs/reference/getPooledVar.html +++ b/docs/reference/getPooledVar.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -79,11 +79,11 @@

    Details

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/glmChecks.html b/docs/reference/glmChecks.html index f2ea44350..4fd352717 100644 --- a/docs/reference/glmChecks.html +++ b/docs/reference/glmChecks.html @@ -18,7 +18,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -100,11 +100,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/index.html b/docs/reference/index.html index 66ffc0598..e0bd33e39 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -353,6 +353,10 @@

    All functions ds.matrixTranspose()

    Transposes a server-side matrix

    + +

    ds.mdPattern()

    + +

    Display missing data patterns with disclosure control

    ds.mean()

    @@ -538,11 +542,11 @@

    All functions
    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/isAssigned.html b/docs/reference/isAssigned.html index 8044eb8b6..554032c6a 100644 --- a/docs/reference/isAssigned.html +++ b/docs/reference/isAssigned.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -80,11 +80,11 @@

    Details

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/isDefined.html b/docs/reference/isDefined.html index f2cbb94bb..87c16b64b 100644 --- a/docs/reference/isDefined.html +++ b/docs/reference/isDefined.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -91,11 +91,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/logical2int.html b/docs/reference/logical2int.html index 34f4853fb..dc5e29d12 100644 --- a/docs/reference/logical2int.html +++ b/docs/reference/logical2int.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -74,11 +74,11 @@

    Details

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/meanByClassHelper0a.html b/docs/reference/meanByClassHelper0a.html index 98dd1e0e7..ae4c1bfa8 100644 --- a/docs/reference/meanByClassHelper0a.html +++ b/docs/reference/meanByClassHelper0a.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -93,11 +93,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/meanByClassHelper0b.html b/docs/reference/meanByClassHelper0b.html index 4e4fb247f..99ffdb8da 100644 --- a/docs/reference/meanByClassHelper0b.html +++ b/docs/reference/meanByClassHelper0b.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -97,11 +97,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/meanByClassHelper1.html b/docs/reference/meanByClassHelper1.html index 9df03a529..5ce0be129 100644 --- a/docs/reference/meanByClassHelper1.html +++ b/docs/reference/meanByClassHelper1.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -90,11 +90,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/meanByClassHelper2.html b/docs/reference/meanByClassHelper2.html index 5466cbedf..4cb7975a6 100644 --- a/docs/reference/meanByClassHelper2.html +++ b/docs/reference/meanByClassHelper2.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -91,11 +91,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/meanByClassHelper3.html b/docs/reference/meanByClassHelper3.html index d3bcf8f14..1783f3417 100644 --- a/docs/reference/meanByClassHelper3.html +++ b/docs/reference/meanByClassHelper3.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -90,11 +90,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/meanByClassHelper4.html b/docs/reference/meanByClassHelper4.html index 2b8f40b7d..4d955f4dd 100644 --- a/docs/reference/meanByClassHelper4.html +++ b/docs/reference/meanByClassHelper4.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -100,11 +100,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/rowPercent.html b/docs/reference/rowPercent.html index df9685296..d945d6c1d 100644 --- a/docs/reference/rowPercent.html +++ b/docs/reference/rowPercent.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -76,11 +76,11 @@

    Author

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/reference/subsetHelper.html b/docs/reference/subsetHelper.html index 0a94aa1b3..bc97b31b9 100644 --- a/docs/reference/subsetHelper.html +++ b/docs/reference/subsetHelper.html @@ -17,7 +17,7 @@ dsBaseClient - 6.3.4 + 6.3.5-9000 @@ -131,11 +131,11 @@

    Examples

    -

    Site built with pkgdown 2.1.3.

    +

    Site built with pkgdown 2.2.0.

    diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 39df9eefa..fe21f864e 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -6,6 +6,7 @@ /reference/checkClass.html /reference/colPercent.html /reference/computeWeightedMeans.html +/reference/dot-pool_md_patterns.html /reference/ds.Boole.html /reference/ds.abs.html /reference/ds.asCharacter.html @@ -84,6 +85,7 @@ /reference/ds.matrixInvert.html /reference/ds.matrixMult.html /reference/ds.matrixTranspose.html +/reference/ds.mdPattern.html /reference/ds.mean.html /reference/ds.meanByClass.html /reference/ds.meanSdGp.html diff --git a/man/ds.mdPattern.Rd b/man/ds.mdPattern.Rd index ffda06e0b..b1bacc0b1 100644 --- a/man/ds.mdPattern.Rd +++ b/man/ds.mdPattern.Rd @@ -20,14 +20,14 @@ connections will be used: see \code{\link[DSI]{datashield.connections_default}}. } \value{ For type='split': A list with one element per study, each containing: -\itemize{ +\describe{ \item{pattern}{The missing data pattern matrix for that study} \item{valid}{Logical indicating if all patterns meet disclosure requirements} \item{message}{A message describing the validity status} } For type='combine': A list containing: -\itemize{ +\describe{ \item{pattern}{The pooled missing data pattern matrix across all studies} \item{valid}{Logical indicating if all pooled patterns meet disclosure requirements} \item{message}{A message describing the validity status} From 9694b00b876c89475c7a40829d145c5cb9574eb5 Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Fri, 14 Nov 2025 06:22:47 +0000 Subject: [PATCH 10/11] Removed options call setting datashield.errors.print to TRUE, for the moment --- tests/testthat/test-smk-ds.colnames.R | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/testthat/test-smk-ds.colnames.R b/tests/testthat/test-smk-ds.colnames.R index 0e9aaf358..9a665707f 100644 --- a/tests/testthat/test-smk-ds.colnames.R +++ b/tests/testthat/test-smk-ds.colnames.R @@ -25,7 +25,6 @@ test_that("setup", { # Tests # -options(datashield.errors.print = TRUE) # context("ds.colnames::smk") test_that("simple colnames", { myvectors <- c("D$LAB_TSC", "D$LAB_TRIG") From 3a76f872338da166f6f8c93ef2ca025999179b12 Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Fri, 14 Nov 2025 11:26:30 +0000 Subject: [PATCH 11/11] Fixes for 'ds.colnames' --- .../perf_files/default_perf_profile.csv | 2 +- tests/testthat/test-smk-ds.colnames.R | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/tests/testthat/perf_files/default_perf_profile.csv b/tests/testthat/perf_files/default_perf_profile.csv index d75711a36..ead056989 100644 --- a/tests/testthat/perf_files/default_perf_profile.csv +++ b/tests/testthat/perf_files/default_perf_profile.csv @@ -6,7 +6,7 @@ "ds.asNumeric::perf:0","2.185","0.5","2" "ds.assign::perf::0","5.490","0.5","2" "ds.class::perf::combine:0","4.760","0.5","2" -"ds.colnames::perf:0","4.159","0.5","2" +"ds.colnames::perf:0","9.578","0.5","2" "ds.exists::perf::combine:0","11.09","0.5","2" "ds.length::perf::combine:0","9.479","0.5","2" "ds.mean::perf::combine:0","9.650","0.5","2" diff --git a/tests/testthat/test-smk-ds.colnames.R b/tests/testthat/test-smk-ds.colnames.R index 9a665707f..ee98cc2e8 100644 --- a/tests/testthat/test-smk-ds.colnames.R +++ b/tests/testthat/test-smk-ds.colnames.R @@ -47,18 +47,21 @@ test_that("simple colnames", { test_that("fails if the object does not exist", { expect_error( ds.colnames("non_existing_df"), - regexp = "'non_existing_df' does not exist", + regexp = "There are some DataSHIELD errors, list them with datashield.error()", ignore.case = TRUE ) }) -test_that("fails if object is not a data frame or matrix", { - expect_error( - ds.colnames("D$LAB_TSC"), - regexp = "must be of type data.frame or matrix", - ignore.case = TRUE - ) -}) +########################################### +### Remote checks not performed ### +########################################### +# test_that("fails if object is not a data frame or matrix", { +# expect_error( +# ds.colnames("D$LAB_TSC"), +# regexp = "must be of type data.frame or matrix", +# ignore.case = TRUE +# ) +# }) # # Done