From 3c2188cc8184497330f1922796822b29f5507454 Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Wed, 19 Nov 2025 13:59:29 +0000 Subject: [PATCH 01/11] Save and restore 'par' values --- R/ds.contourPlot.R | 4 ++++ R/ds.heatmapPlot.R | 4 ++++ R/ds.histogram.R | 4 ++++ R/ds.scatterPlot.R | 4 ++++ 4 files changed, 16 insertions(+) diff --git a/R/ds.contourPlot.R b/R/ds.contourPlot.R index 4e195e48b..6601dd912 100644 --- a/R/ds.contourPlot.R +++ b/R/ds.contourPlot.R @@ -120,6 +120,10 @@ ds.contourPlot <- function(x=NULL, y=NULL, type='combine', show='all', numints=2 stop("y=NULL. Please provide the names of two numeric vectors!", call.=FALSE) } + # Save par and setup reseting of par values + old_par <- par(no.readonly = TRUE) + on.exit(par(old_par), add = TRUE) + # check if the input objects are defined in all the studies isDefined(datasources, x) isDefined(datasources, y) diff --git a/R/ds.heatmapPlot.R b/R/ds.heatmapPlot.R index 262b1d700..2c920e331 100644 --- a/R/ds.heatmapPlot.R +++ b/R/ds.heatmapPlot.R @@ -169,6 +169,10 @@ ds.heatmapPlot <- function(x=NULL, y=NULL, type="combine", show="all", numints=2 stop("y=NULL. Please provide the names of the 2nd numeric vector!", call.=FALSE) } + # Save par and setup reseting of par values + old_par <- par(no.readonly = TRUE) + on.exit(par(old_par), add = TRUE) + # check if the input objects are defined in all the studies isDefined(datasources, x) isDefined(datasources, y) diff --git a/R/ds.histogram.R b/R/ds.histogram.R index 0f5357b77..358c1a08c 100644 --- a/R/ds.histogram.R +++ b/R/ds.histogram.R @@ -167,6 +167,10 @@ ds.histogram <- function(x=NULL, type="split", num.breaks=10, method="smallCells stop("Please provide the name of the input vector!", call.=FALSE) } + # Save par and setup reseting of par values + old_par <- par(no.readonly = TRUE) + on.exit(par(old_par), add = TRUE) + # check if the input object is defined in all the studies isDefined(datasources, x) diff --git a/R/ds.scatterPlot.R b/R/ds.scatterPlot.R index 6c2c78058..21e5b2629 100644 --- a/R/ds.scatterPlot.R +++ b/R/ds.scatterPlot.R @@ -147,6 +147,10 @@ ds.scatterPlot <- function(x=NULL, y=NULL, method='deterministic', k=3, noise=0. stop("The 'datasources' were expected to be a list of DSConnection-class objects", call.=FALSE) } + # Save par and setup reseting of par values + old_par <- par(no.readonly = TRUE) + on.exit(par(old_par), add = TRUE) + # check if the input objects are defined in all the studies isDefined(datasources, x) isDefined(datasources, y) From ca5274b8e725c1bca05547e41ed5d50eab6879d6 Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Fri, 21 Nov 2025 14:00:23 +0000 Subject: [PATCH 02/11] Fix version --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index f2d7fb091..8f531e9e0 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: dsBaseClient Title: 'DataSHIELD' Client Side Base Functions -Version: 6.3.5-9000 +Version: 6.3.5.9000 Description: Base 'DataSHIELD' functions for the client side. 'DataSHIELD' is a software package which allows you to do non-disclosive federated analysis on sensitive data. 'DataSHIELD' analytic functions have been designed to only share non disclosive summary statistics, with built in automated output From 7761ed1f260c3ec73c820d612bec63ae9b1696eb Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Fri, 21 Nov 2025 15:59:01 +0000 Subject: [PATCH 03/11] Fix return and export --- NAMESPACE | 1 - R/computeWeightedMeans.R | 4 +++- man/computeWeightedMeans.Rd | 4 ++++ man/ds.forestplot.Rd | 3 +++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 406745737..a41b8f0af 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,6 +1,5 @@ # Generated by roxygen2: do not edit by hand -export(computeWeightedMeans) export(ds.Boole) export(ds.abs) export(ds.asCharacter) diff --git a/R/computeWeightedMeans.R b/R/computeWeightedMeans.R index 0f04fc915..1284ffc08 100644 --- a/R/computeWeightedMeans.R +++ b/R/computeWeightedMeans.R @@ -9,9 +9,11 @@ #' @param variables character name of the variable(s) to focus on. The variables must be in the data.table #' @param weight character name of the data.table column that contains a weight. #' @param by character vector of the columns to group by +#' @return Returns a data table object with computed weighted means. +#' #' @import data.table #' @importFrom stats as.formula na.omit ts weighted.mean -#' @export +#' @keywords internal computeWeightedMeans <- function(data_table, variables, weight, by) { if (is.null(weight)) { diff --git a/man/computeWeightedMeans.Rd b/man/computeWeightedMeans.Rd index 0b8b0879f..c1f9bfc15 100644 --- a/man/computeWeightedMeans.Rd +++ b/man/computeWeightedMeans.Rd @@ -15,6 +15,9 @@ computeWeightedMeans(data_table, variables, weight, by) \item{by}{character vector of the columns to group by} } +\value{ +Returns a data table object with computed weighted means. +} \description{ This function is originally from the panelaggregation package. It has been ported here in order to bypass the package being @@ -23,3 +26,4 @@ kicked off CRAN. \author{ Matthias Bannert, Gabriel Bucur } +\keyword{internal} diff --git a/man/ds.forestplot.Rd b/man/ds.forestplot.Rd index 408dc2d30..66606601d 100644 --- a/man/ds.forestplot.Rd +++ b/man/ds.forestplot.Rd @@ -19,6 +19,9 @@ See details from \code{?meta::metagen} for the different options.} \item{layout}{\code{character} (default \code{"JAMA"}) Layout of the plot. See details from \code{?meta::metagen} for the different options.} } +\value{ +Results a foresplot object created with `meta::forest`. +} \description{ Draws a forestplot of the coefficients for Study-Level Meta-Analysis performed with DataSHIELD From ddae0c79117300b2ee1f818dac2acd5d7bddd9a7 Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Fri, 21 Nov 2025 16:00:30 +0000 Subject: [PATCH 04/11] Replaces print(..) and cat(...) to message(...) --- R/ds.cbind.R | 10 +++++----- R/ds.dataFrame.R | 10 +++++----- R/ds.dataFrameSubset.R | 8 ++++---- R/ds.dmtC2S.R | 2 +- R/ds.extractQuantiles.R | 2 +- R/ds.forestplot.R | 1 + R/ds.glm.R | 20 ++++++++++---------- R/ds.glmSLMA.R | 24 ++++++++++++------------ R/ds.glmSummary.R | 10 +++++----- R/ds.glmerSLMA.R | 32 ++++++++++++++++---------------- R/ds.listClientsideFunctions.R | 18 ------------------ R/ds.lmerSLMA.R | 34 +++++++++++++++++----------------- R/ds.matrix.R | 2 +- R/ds.matrixDiag.R | 2 +- R/ds.rBinom.R | 4 ++-- R/ds.rNorm.R | 4 ++-- R/ds.rPois.R | 4 ++-- R/ds.rUnif.R | 2 +- R/ds.ranksSecure.R | 25 +++++++++++-------------- R/ds.rbind.R | 8 ++++---- R/ds.rep.R | 8 ++++---- R/ds.sample.R | 6 +++--- R/ds.table.R | 29 ++++++++++++++--------------- 23 files changed, 122 insertions(+), 143 deletions(-) diff --git a/R/ds.cbind.R b/R/ds.cbind.R index d943e0175..e21cb961c 100644 --- a/R/ds.cbind.R +++ b/R/ds.cbind.R @@ -157,7 +157,7 @@ ds.cbind <- function(x=NULL, DataSHIELD.checks=FALSE, force.colnames=NULL, newob } colNames <- unlist(colNames) if(anyDuplicated(colNames) != 0){ - cat("\n Warning: Some column names in study", j, "are duplicated and a suffix '.k' will be added to the kth replicate \n") + message("\n Warning: Some column names in study", j, "are duplicated and a suffix '.k' will be added to the kth replicate \n") } } } @@ -198,7 +198,7 @@ ds.cbind <- function(x=NULL, DataSHIELD.checks=FALSE, force.colnames=NULL, newob next.class <- DSI::datashield.aggregate(datasources[std], calltext1) class.vector <- c(class.vector, next.class[[1]]) if (notify.of.progress){ - cat("\n",j," of ", length(x), " elements to combine in step 1 of 2 in study ", std, "\n") + message("\n",j," of ", length(x), " elements to combine in step 1 of 2 in study ", std, "\n") } } for(j in 1:length(x)){ @@ -206,14 +206,14 @@ ds.cbind <- function(x=NULL, DataSHIELD.checks=FALSE, force.colnames=NULL, newob if(class.vector[j]!="data.frame" && class.vector[j]!="matrix"){ colname.vector <- c(colname.vector, test.df) if (notify.of.progress){ - cat("\n",j," of ", length(x), " elements to combine in step 2 of 2 in study ", std, "\n") + message("\n",j," of ", length(x), " elements to combine in step 2 of 2 in study ", std, "\n") } }else{ calltext2 <- call('colnamesDS', test.df) df.names <- DSI::datashield.aggregate(datasources[std], calltext2) colname.vector <- c(colname.vector, df.names[[1]]) if (notify.of.progress){ - cat("\n", j," of ", length(x), " elements to combine in step 2 of 2 in study ", std, "\n") + message("\n", j," of ", length(x), " elements to combine in step 2 of 2 in study ", std, "\n") } } } @@ -221,7 +221,7 @@ ds.cbind <- function(x=NULL, DataSHIELD.checks=FALSE, force.colnames=NULL, newob } if (notify.of.progress){ - cat("\nBoth steps in all studies completed\n") + message("\nBoth steps in all studies completed\n") } # prepare name vectors for transmission diff --git a/R/ds.dataFrame.R b/R/ds.dataFrame.R index 5837747c6..eeddcdd90 100644 --- a/R/ds.dataFrame.R +++ b/R/ds.dataFrame.R @@ -137,7 +137,7 @@ ds.dataFrame <- function(x=NULL, row.names=NULL, check.rows=FALSE, check.names=T } colNames <- unlist(colNames) if(anyDuplicated(colNames) != 0){ - cat("\n Warning: Some column names in study", j, "are duplicated and a suffix '.k' will be added to the kth replicate \n") + message("\n Warning: Some column names in study", j, "are duplicated and a suffix '.k' will be added to the kth replicate \n") } } } @@ -178,7 +178,7 @@ ds.dataFrame <- function(x=NULL, row.names=NULL, check.rows=FALSE, check.names=T next.class <- DSI::datashield.aggregate(datasources[std], calltext1) class.vector <- c(class.vector, next.class[[1]]) if (notify.of.progress){ - cat("\n",j," of ", length(x), " elements to combine in step 1 of 2 in study ", std, "\n") + message("\n",j," of ", length(x), " elements to combine in step 1 of 2 in study ", std, "\n") } } for(j in 1:length(x)){ @@ -186,14 +186,14 @@ ds.dataFrame <- function(x=NULL, row.names=NULL, check.rows=FALSE, check.names=T if(class.vector[j]!="data.frame" && class.vector[j]!="matrix"){ colname.vector <- c(colname.vector, test.df) if (notify.of.progress){ - cat("\n",j," of ", length(x), " elements to combine in step 2 of 2 in study ", std, "\n") + message("\n",j," of ", length(x), " elements to combine in step 2 of 2 in study ", std, "\n") } }else{ calltext2 <- call('colnamesDS', test.df) df.names <- DSI::datashield.aggregate(datasources[std], calltext2) colname.vector <- c(colname.vector, df.names[[1]]) if (notify.of.progress){ - cat("\n", j," of ", length(x), " elements to combine in step 2 of 2 in study ", std, "\n") + message("\n", j," of ", length(x), " elements to combine in step 2 of 2 in study ", std, "\n") } } } @@ -201,7 +201,7 @@ ds.dataFrame <- function(x=NULL, row.names=NULL, check.rows=FALSE, check.names=T } if (notify.of.progress){ - cat("\nBoth steps in all studies completed\n") + message("\nBoth steps in all studies completed\n") } # prepare vectors for transmission diff --git a/R/ds.dataFrameSubset.R b/R/ds.dataFrameSubset.R index 1c5ff6a00..1ae6278db 100644 --- a/R/ds.dataFrameSubset.R +++ b/R/ds.dataFrameSubset.R @@ -231,13 +231,13 @@ if(!is.null(rm.cols)){ if (notify.of.progress) { if(num.messages==1){ - cat("\nSource",s,"\n",return.warning.message[[s]][[1]],"\n") + message("\nSource",s,"\n",return.warning.message[[s]][[1]],"\n") }else{ - cat("\nSource",s,"\n") + message("\nSource",s,"\n") for(m in 1:(num.messages-1)){ - cat(return.warning.message[[s]][[m]],"\n") + message(return.warning.message[[s]][[m]],"\n") } - cat(return.warning.message[[s]][[num.messages]],"\n") + message(return.warning.message[[s]][[num.messages]],"\n") } } } diff --git a/R/ds.dmtC2S.R b/R/ds.dmtC2S.R index ee2e4be67..085d198fb 100644 --- a/R/ds.dmtC2S.R +++ b/R/ds.dmtC2S.R @@ -93,7 +93,7 @@ if(dplyr::is.tbl(dfdata)) if(!is.matrix(dfdata) && !is.data.frame(dfdata) && !dplyr::is.tbl(dfdata)) { - cat("\n FAILED: must either be a data.frame, matrix or tibble") + message("\n FAILED: must either be a data.frame, matrix or tibble") return('Please respecify') } diff --git a/R/ds.extractQuantiles.R b/R/ds.extractQuantiles.R index ba39dd51c..4068f8f3b 100644 --- a/R/ds.extractQuantiles.R +++ b/R/ds.extractQuantiles.R @@ -224,7 +224,7 @@ datasources.in.current.function<-datasources #CALL CLIENTSIDE FUNCTION ds.dmtC2S TO RETURN final.quantile.df TO SERVERSIDE dsBaseClient::ds.dmtC2S(dfdata=final.quantile.df,newobj="final.quantile.df",datasources = datasources.in.current.function) - cat("\n\n\n"," FINAL RANKING PROCEDURES COMPLETE: + message("\n\n\n"," FINAL RANKING PROCEDURES COMPLETE: PRIMARY RANKING OUTPUT IS IN DATA FRAME",extract.summary.output.ranks.df, " WHICH IS SORTED BY",extract.ranks.sort.by," AND HAS BEEN diff --git a/R/ds.forestplot.R b/R/ds.forestplot.R index 60227913c..e1bc21c13 100644 --- a/R/ds.forestplot.R +++ b/R/ds.forestplot.R @@ -10,6 +10,7 @@ #' See details from \code{?meta::metagen} for the different options. #' @param layout \code{character} (default \code{"JAMA"}) Layout of the plot. #' See details from \code{?meta::metagen} for the different options. +#' @return Results a foresplot object created with `meta::forest`. #' #' @export #' diff --git a/R/ds.glm.R b/R/ds.glm.R index 13cba2d96..8b1dbceb7 100644 --- a/R/ds.glm.R +++ b/R/ds.glm.R @@ -343,10 +343,10 @@ ds.glm <- function(formula=NULL, data=NULL, family=NULL, offset=NULL, weights=NU # to provide name of offset or weights variable if(sum(as.numeric(grepl('offset', formula, ignore.case=TRUE)))>0 || sum(as.numeric(grepl('weights', formula, ignore.case=TRUE)))>0){ - cat("\n\n WARNING: you may have specified an offset or regression weights") - cat("\n as part of the model formula. In ds.glm (unlike the usual glm in R)") - cat("\n you must specify an offset or weights separately from the formula") - cat("\n using the offset or weights argument.\n\n") + message("\n\n WARNING: you may have specified an offset or regression weights") + message("\n as part of the model formula. In ds.glm (unlike the usual glm in R)") + message("\n you must specify an offset or weights separately from the formula") + message("\n using the offset or weights argument.\n\n") } formula <- stats::as.formula(formula) @@ -451,12 +451,12 @@ ds.glm <- function(formula=NULL, data=NULL, family=NULL, offset=NULL, weights=NU "Any values of 1 in the following tables denote potential disclosure risks\n", "please use the argument to include only valid studies.\n", "Errors by study are as follows:\n") - print(as.matrix(y.invalid)) - print(as.matrix(Xpar.invalid)) - print(as.matrix(w.invalid)) - print(as.matrix(o.invalid)) - print(as.matrix(glm.saturation.invalid)) - print(as.matrix(errorMessage)) + message(as.matrix(y.invalid)) + message(as.matrix(Xpar.invalid)) + message(as.matrix(w.invalid)) + message(as.matrix(o.invalid)) + message(as.matrix(glm.saturation.invalid)) + message(as.matrix(errorMessage)) return(list( output.blocked.information.1, diff --git a/R/ds.glmSLMA.R b/R/ds.glmSLMA.R index 9b46a6a40..3c9d0edb5 100644 --- a/R/ds.glmSLMA.R +++ b/R/ds.glmSLMA.R @@ -398,10 +398,10 @@ ds.glmSLMA<-function(formula=NULL, family=NULL, offset=NULL, weights=NULL, combi if(sum(as.numeric(grepl('offset', formula, ignore.case=TRUE)))>0 || sum(as.numeric(grepl('weights', formula, ignore.case=TRUE)))>0) { - cat("\n\n WARNING: you may have specified an offset or regression weights") - cat("\n as part of the model formula. In ds.glm (unlike the usual glm in R)") - cat("\n you must specify an offset or weights separately from the formula") - cat("\n using the offset or weights argument.\n\n") + message("\n\n WARNING: you may have specified an offset or regression weights") + message("\n as part of the model formula. In ds.glm (unlike the usual glm in R)") + message("\n you must specify an offset or weights separately from the formula") + message("\n using the offset or weights argument.\n\n") } formula <- stats::as.formula(formula) @@ -617,7 +617,7 @@ if(at.least.one.study.data.error) } if (notify.of.progress) { - cat("\n\nSAVING SERVERSIDE glm OBJECT AS: <",newobj,">\n\n") + message("\n\nSAVING SERVERSIDE glm OBJECT AS: <",newobj,">\n\n") } calltext.2 <- call('glmSLMADS.assign', formula, family, offset, weights, dataName) @@ -664,17 +664,17 @@ if(!all.studies.valid) { for(sse in study.with.errors) { - cat("\n","Error report from second serverside function for study",sse,"\n") - cat("############################################################","\n") - cat(unlist(study.summary[[sse]][[1]]),"\n") - cat(unlist(study.summary[[sse]][[2]]),"\n\n") + message("\n","Error report from second serverside function for study",sse,"\n") + message("############################################################","\n") + message(unlist(study.summary[[sse]][[1]]),"\n") + message(unlist(study.summary[[sse]][[2]]),"\n\n") num.messages<-length(study.summary[[sse]])-2 for(m in 1:num.messages) { if(!is.null(unlist(study.summary[[sse]][[2+m]]))) { - cat(unlist(study.summary[[sse]][[2+m]]),"\n\n") + message(unlist(study.summary[[sse]][[2+m]]),"\n\n") } } } @@ -806,8 +806,8 @@ if(num.valid.studies>1){ if(!coefficient.vectors.match){ - cat("\n\nModels in different sources vary in structure\nplease match coefficients for meta-analysis individually\n") - cat("nYou can use the DataSHIELD generated estimates and standard errors as the basis for a meta-analysis\nbut carry out the final pooling step independently of DataSHIELD using whatever meta-analysis package you wish\n\n") + message("\n\nModels in different sources vary in structure\nplease match coefficients for meta-analysis individually\n") + message("nYou can use the DataSHIELD generated estimates and standard errors as the basis for a meta-analysis\nbut carry out the final pooling step independently of DataSHIELD using whatever meta-analysis package you wish\n\n") return(list(output.summary=output.summary)) } diff --git a/R/ds.glmSummary.R b/R/ds.glmSummary.R index 5629d937f..9fc259c5b 100644 --- a/R/ds.glmSummary.R +++ b/R/ds.glmSummary.R @@ -172,17 +172,17 @@ if(obj.name.exists.in.all.sources && obj.non.null.in.all.sources){ # # # # if(no.errors){ # -# cat("\n\nCREATE ASSIGN OBJECT\n") # +# message("\n\nCREATE ASSIGN OBJECT\n") # # # # validity.check<-paste0("<",test.obj.name, "> appears valid in all sources") # # print(list(is.object.created=return.message,validity.check=validity.check)) # # } # # if(!no.errors){ # - validity.check<-paste0("<",test.obj.name,"> invalid in at least one source. See studyside.messages:") # - print(list(is.object.created=return.message,validity.check=validity.check, # - studyside.messages=studyside.message)) # - } # + validity.check<-paste0("<",test.obj.name,"> invalid in at least one source. See studyside.messages:") # + message(list(is.object.created=return.message,validity.check=validity.check, # + studyside.messages=studyside.message)) # + } # # #END OF CHECK OBJECT CREATED CORECTLY MODULE # ############################################################################################################# diff --git a/R/ds.glmerSLMA.R b/R/ds.glmerSLMA.R index 8bb8aa36f..b996707ef 100644 --- a/R/ds.glmerSLMA.R +++ b/R/ds.glmerSLMA.R @@ -269,10 +269,10 @@ ds.glmerSLMA <- function(formula=NULL, offset=NULL, weights=NULL, combine.with.m if(sum(as.numeric(grepl('offset', formula, ignore.case=TRUE)))>0 || sum(as.numeric(grepl('weights', formula, ignore.case=TRUE)))>0) { - cat("\n\n WARNING: you may have specified an offset or regression weights") - cat("\n as part of the model formula. In ds.glm (unlike the usual glm in R)") - cat("\n you must specify an offset or weights separately from the formula") - cat("\n using the offset or weights argument.\n\n") + message("\n\n WARNING: you may have specified an offset or regression weights") + message("\n as part of the model formula. In ds.glm (unlike the usual glm in R)") + message("\n you must specify an offset or weights separately from the formula") + message("\n using the offset or weights argument.\n\n") } formula <- stats::as.formula(formula) @@ -363,7 +363,7 @@ ds.glmerSLMA <- function(formula=NULL, offset=NULL, weights=NULL, combine.with.m if (notify.of.progress) { - cat("\n\nSAVING SERVERSIDE glmerMod OBJECT AS: <",newobj,">\n\n") + message("\n\nSAVING SERVERSIDE glmerMod OBJECT AS: <",newobj,">\n\n") } calltext.2 <- call('glmerSLMADS.assign', formula, offset, weights, dataName, family, @@ -407,17 +407,17 @@ ds.glmerSLMA <- function(formula=NULL, offset=NULL, weights=NULL, combine.with.m { for(sse in study.with.errors) { - cat("\n","Error report from second serverside function for study",sse,"\n") - cat("############################################################","\n") - cat(unlist(study.summary[[sse]][[1]]),"\n") - cat(unlist(study.summary[[sse]][[2]]),"\n\n") + message("\n","Error report from second serverside function for study",sse,"\n") + message("############################################################","\n") + message(unlist(study.summary[[sse]][[1]]),"\n") + message(unlist(study.summary[[sse]][[2]]),"\n\n") num.messages<-length(study.summary[[sse]])-2 for(m in 1:num.messages) { if(!is.null(unlist(study.summary[[sse]][[2+m]]))) { - cat(unlist(study.summary[[sse]][[2+m]]),"\n\n") + message(unlist(study.summary[[sse]][[2+m]]),"\n\n") } } } @@ -425,8 +425,8 @@ ds.glmerSLMA <- function(formula=NULL, offset=NULL, weights=NULL, combine.with.m if(all.studies.valid) { - cat("\nAll studies passed disclosure tests\n") - cat("Please check for convergence warnings in the study summaries\n\n\n") + message("\nAll studies passed disclosure tests\n") + message("Please check for convergence warnings in the study summaries\n\n\n") } } @@ -551,8 +551,8 @@ ds.glmerSLMA <- function(formula=NULL, offset=NULL, weights=NULL, combine.with.m if(!coefficient.vectors.match){ - cat("\n\nModels in different sources vary in structure\nplease match coefficients for meta-analysis individually\n") - cat("nYou can use the DataSHIELD generated estimates and standard errors as the basis for a meta-analysis\nbut carry out the final pooling step independently of DataSHIELD using whatever meta-analysis package you wish\n\n") + message("\n\nModels in different sources vary in structure\nplease match coefficients for meta-analysis individually\n") + message("nYou can use the DataSHIELD generated estimates and standard errors as the basis for a meta-analysis\nbut carry out the final pooling step independently of DataSHIELD using whatever meta-analysis package you wish\n\n") return(list(output.summary=output.summary)) } @@ -615,10 +615,10 @@ ds.glmerSLMA <- function(formula=NULL, offset=NULL, weights=NULL, combine.with.m if (notify.of.progress) { - cat("Convergence information\n") + message("Convergence information\n") for(r in 1:numstudies) { - cat(full.error.message[r],"\n") + message(full.error.message[r],"\n") } } diff --git a/R/ds.listClientsideFunctions.R b/R/ds.listClientsideFunctions.R index ba7c57a89..752401471 100644 --- a/R/ds.listClientsideFunctions.R +++ b/R/ds.listClientsideFunctions.R @@ -57,48 +57,30 @@ for(j in 1:length(search.path)) } - cat("\n### Full search path \n") print.search.list<-search() - print(print.search.list) if(test.userDefinedClient==TRUE) { - cat("\n### userDefinedClient functions \n") print.text<-ls(pos=".GlobalEnv",pattern="ds.*") if(identical(print.text,character(0)))print.text<-"No clientside functions in this repository" - print(print.text) print.text.full<-c(print.text.full,print.text) } if(test.dsBetaTestClient==TRUE) { - cat("\n### dsBetaTestClient functions \n") print.text<-ls(pos="package:dsBetaTestClient") if(identical(print.text,character(0)))print.text<-"No clientside functions in this repository" - print(print.text) print.text.full<-c(print.text.full,print.text) } if(test.dsBaseClient==TRUE) { - cat("\n### dsBaseClient functions \n") print.text<-ls(pos="package:dsBaseClient") if(identical(print.text,character(0)))print.text<-"No clientside functions in this repository" - print(print.text) print.text.full<-c(print.text.full,print.text) } - if(test.no.functions==TRUE) - { - cat("\n### No standard clientside functions identified \n") - } - - cat("\nIf you cannot see one or more of the clientside functions you expected to find", - "please see above for the full search path. If one of the paths is a possible clientside repository", - "issue the R command ls(pos='package:dsPackageName')", - "where 'package:dsPackageName' is the full name stated in the search path\n\n") - return(print.text.full) } # ds.listClientsideFunctions() diff --git a/R/ds.lmerSLMA.R b/R/ds.lmerSLMA.R index b6d05c9bf..8b7c69b2c 100644 --- a/R/ds.lmerSLMA.R +++ b/R/ds.lmerSLMA.R @@ -225,10 +225,10 @@ ds.lmerSLMA <- function(formula=NULL, offset=NULL, weights=NULL, combine.with.me if(sum(as.numeric(grepl('offset', formula, ignore.case=TRUE)))>0 || sum(as.numeric(grepl('weights', formula, ignore.case=TRUE)))>0) { - cat("\n\n WARNING: you may have specified an offset or regression weights") - cat("\n as part of the model formula. In ds.glm (unlike the usual glm in R)") - cat("\n you must specify an offset or weights separately from the formula") - cat("\n using the offset or weights argument.\n\n") + message("\n\n WARNING: you may have specified an offset or regression weights") + message("\n as part of the model formula. In ds.glm (unlike the usual glm in R)") + message("\n you must specify an offset or weights separately from the formula") + message("\n using the offset or weights argument.\n\n") } formula <- stats::as.formula(formula) @@ -286,7 +286,7 @@ ds.lmerSLMA <- function(formula=NULL, offset=NULL, weights=NULL, combine.with.me if(!is.null(optimizer)&&optimizer!="nloptwrap") { errorMessage.opt<-"ERROR: the only optimizer currently available for lmer is 'nloptwrap', please respecify" - cat("\n",errorMessage.opt,"\n") + message("\n",errorMessage.opt,"\n") return(list(errorMessage=errorMessage.opt)) } @@ -303,7 +303,7 @@ ds.lmerSLMA <- function(formula=NULL, offset=NULL, weights=NULL, combine.with.me } if (notify.of.progress) { - cat("\n\nSAVING SERVERSIDE lmerMod OBJECT AS: <",newobj,">\n\n") + message("\n\nSAVING SERVERSIDE lmerMod OBJECT AS: <",newobj,">\n\n") } calltext.2 <- call('lmerSLMADS.assign', formula, offset, weights, dataName, REML, @@ -343,17 +343,17 @@ ds.lmerSLMA <- function(formula=NULL, offset=NULL, weights=NULL, combine.with.me { for(sse in study.with.errors) { - cat("\n","Error report from second serverside function for study",sse,"\n") - cat("############################################################","\n") - cat(unlist(study.summary[[sse]][[1]]),"\n") - cat(unlist(study.summary[[sse]][[2]]),"\n\n") + message("\n","Error report from second serverside function for study",sse,"\n") + message("############################################################","\n") + message(unlist(study.summary[[sse]][[1]]),"\n") + message(unlist(study.summary[[sse]][[2]]),"\n\n") num.messages<-length(study.summary[[sse]])-2 for(m in 1:num.messages) { if(!is.null(unlist(study.summary[[sse]][[2+m]]))) { - cat(unlist(study.summary[[sse]][[2+m]]),"\n\n") + message(unlist(study.summary[[sse]][[2+m]]),"\n\n") } } } @@ -361,8 +361,8 @@ ds.lmerSLMA <- function(formula=NULL, offset=NULL, weights=NULL, combine.with.me if(all.studies.valid) { - cat("\nAll studies passed disclosure tests\n") - cat("Please check for convergence warnings in the study summaries\n\n\n") + message("\nAll studies passed disclosure tests\n") + message("Please check for convergence warnings in the study summaries\n\n\n") } } @@ -488,8 +488,8 @@ ds.lmerSLMA <- function(formula=NULL, offset=NULL, weights=NULL, combine.with.me if(!coefficient.vectors.match){ - cat("\n\nModels in different sources vary in structure\nplease match coefficients for meta-analysis individually\n") - cat("nYou can use the DataSHIELD generated estimates and standard errors as the basis for a meta-analysis\nbut carry out the final pooling step independently of DataSHIELD using whatever meta-analysis package you wish\n\n") + message("\n\nModels in different sources vary in structure\nplease match coefficients for meta-analysis individually\n") + message("nYou can use the DataSHIELD generated estimates and standard errors as the basis for a meta-analysis\nbut carry out the final pooling step independently of DataSHIELD using whatever meta-analysis package you wish\n\n") return(list(output.summary=output.summary)) } @@ -552,10 +552,10 @@ for(q in 1:numstudies) if (notify.of.progress) { - cat("Convergence information\n") + message("Convergence information\n") for(r in 1:numstudies) { - cat(full.error.message[r],"\n") + message(full.error.message[r],"\n") } } diff --git a/R/ds.matrix.R b/R/ds.matrix.R index b90356c59..69ad3a728 100644 --- a/R/ds.matrix.R +++ b/R/ds.matrix.R @@ -171,7 +171,7 @@ ds.matrix <- function(mdata = NA, from="clientside.scalar", nrows.scalar=NULL, n #Check that valid from has been specified if(from!="serverside.vector"&&from!="serverside.scalar"&&from!="clientside.scalar") { - cat(" FAILED: must be specified as one of the following - 'serverside.vector', + message(" FAILED: must be specified as one of the following - 'serverside.vector', 'serverside.scalar', 'clientside.scalar'\n\n") return('Please respecify') } diff --git a/R/ds.matrixDiag.R b/R/ds.matrixDiag.R index 8c8ca877a..1ea1341a4 100644 --- a/R/ds.matrixDiag.R +++ b/R/ds.matrixDiag.R @@ -203,7 +203,7 @@ ds.matrixDiag<-function(x1=NULL, aim=NULL, nrows.scalar=NULL, newobj=NULL, datas if(aim!="serverside.vector.2.matrix"&&aim!="serverside.scalar.2.matrix"&&aim!="serverside.matrix.2.vector"&& aim!="clientside.vector.2.matrix"&&aim!="clientside.scalar.2.matrix") { - cat(" FAILED: aim must be specified as one of the following - 'serverside.vector.2.matrix', + message(" FAILED: aim must be specified as one of the following - 'serverside.vector.2.matrix', 'serverside.scalar.2.matrix', 'serverside.matrix.2.vector', 'clientside.vector.2.matrix', 'clientside.scalar.2.matrix'\n\n") return('Please respecify') diff --git a/R/ds.rBinom.R b/R/ds.rBinom.R index 2f39f8b10..ec8b4f880 100644 --- a/R/ds.rBinom.R +++ b/R/ds.rBinom.R @@ -214,14 +214,14 @@ single.integer.seed<-c(single.integer.seed,seed.as.integer.study.specific) if(seed.as.text=="NULL"){ -cat("NO SEED SET IN STUDY",study.id,"\n\n") +message("NO SEED SET IN STUDY",study.id,"\n\n") } else { calltext <- paste0("setSeedDS(", seed.as.text, ")") ssDS.obj[[study.id]] <- DSI::datashield.aggregate(datasources[study.id], as.symbol(calltext)) } } -cat("\n\n") +message("\n\n") diff --git a/R/ds.rNorm.R b/R/ds.rNorm.R index 6100c8505..76d885f11 100644 --- a/R/ds.rNorm.R +++ b/R/ds.rNorm.R @@ -217,13 +217,13 @@ single.integer.seed<-c(single.integer.seed,seed.as.integer.study.specific) if(seed.as.text=="NULL"){ -cat("NO SEED SET IN STUDY",study.id,"\n\n") +message("NO SEED SET IN STUDY",study.id,"\n\n") } calltext <- paste0("setSeedDS(", seed.as.text, ")") ssDS.obj[[study.id]] <- DSI::datashield.aggregate(datasources[study.id], as.symbol(calltext)) } -cat("\n\n") +message("\n\n") diff --git a/R/ds.rPois.R b/R/ds.rPois.R index 2d2c7f019..74be7fdf7 100644 --- a/R/ds.rPois.R +++ b/R/ds.rPois.R @@ -190,13 +190,13 @@ single.integer.seed<-c(single.integer.seed,seed.as.integer.study.specific) if(seed.as.text=="NULL"){ -cat("NO SEED SET IN STUDY",study.id,"\n\n") +message("NO SEED SET IN STUDY",study.id,"\n\n") } calltext <- paste0("setSeedDS(", seed.as.text, ")") ssDS.obj[[study.id]] <- DSI::datashield.aggregate(datasources[study.id], as.symbol(calltext)) } -cat("\n\n") +message("\n\n") diff --git a/R/ds.rUnif.R b/R/ds.rUnif.R index d98fa28f0..ea74766b5 100644 --- a/R/ds.rUnif.R +++ b/R/ds.rUnif.R @@ -232,7 +232,7 @@ single.integer.seed<-c(single.integer.seed,seed.as.integer.study.specific) if(seed.as.text=="NULL"){ -cat("NO SEED SET IN STUDY",study.id,"\n") +message("NO SEED SET IN STUDY",study.id,"\n") } else { calltext <- paste0("setSeedDS(", seed.as.text, ")") diff --git a/R/ds.ranksSecure.R b/R/ds.ranksSecure.R index 1d9d98ed9..8ffa6a971 100644 --- a/R/ds.ranksSecure.R +++ b/R/ds.ranksSecure.R @@ -228,7 +228,7 @@ ds.ranksSecure <- function(input.var.name=NULL, quantiles.for.estimation="0.05-0 } if(monitor.progress){ -cat("\n\nStep 1 of 8 complete: +message("\n\nStep 1 of 8 complete: Cleaned up residual output from previous runs of ds.ranksSecure @@ -272,7 +272,7 @@ cat("\n\nStep 1 of 8 complete: dsBaseClient::ds.dmtC2S(dfdata=input.mean.sd.df,newobj="input.mean.sd.df") if(monitor.progress){ -cat("\n\nStep 2 of 8 complete: +message("\n\nStep 2 of 8 complete: Estimated mean and sd of v2br to standardise initial values @@ -308,7 +308,7 @@ cat("\n\nStep 2 of 8 complete: dsBaseClient::ds.dmtC2S(dfdata=min.max.df,newobj="min.max.df") if(monitor.progress){ -cat("\n\nStep 3 of 8 complete: +message("\n\nStep 3 of 8 complete: Generated ultra max and ultra min values to allocate to missing values if is NA.hi or NA.low @@ -316,9 +316,6 @@ cat("\n\nStep 3 of 8 complete: ") } -print(input.mean.sd.df) - - #CALL THE FIRST SERVER SIDE FUNCTION (ASSIGN) #WRITES ENCRYPTED DATA TO SERVERSIDE OBJECT "blackbox.output.df" calltext1 <- call("blackBoxDS", input.var.name=input.var.name, @@ -328,7 +325,7 @@ print(input.mean.sd.df) DSI::datashield.assign(datasources, "blackbox.output.df", calltext1) if(monitor.progress){ -cat("\n\nStep 4 of 8 complete: +message("\n\nStep 4 of 8 complete: Pseudo data synthesised,first set of rank-consistent transformations complete and blackbox.output.df created @@ -390,7 +387,7 @@ cat("\n\nStep 4 of 8 complete: ds.make("sR5.df$global.rank","testvar.ranks") if(monitor.progress){ -cat("\n\nStep 5 of 8 complete: + message("\n\nStep 5 of 8 complete: Global ranks generated and pseudodata stripped out. Now ready to proceed to transformation of global ranks @@ -445,7 +442,7 @@ cat("\n\nStep 5 of 8 complete: DSI::datashield.assign(datasources, "blackbox.ranks.df", calltext4) if(monitor.progress){ -cat("\n\nStep 6 of 8 complete: + message("\n\nStep 6 of 8 complete: Rank-consistent transformations of global ranks complete and blackbox.ranks.df created @@ -510,7 +507,7 @@ cat("\n\nStep 6 of 8 complete: DSI::datashield.assign(datasources,summary.output.ranks.df, calltext7) if(monitor.progress){ -cat("\n\nStep 7 of 8 complete: + message("\n\nStep 7 of 8 complete: Final global ranking of values in v2br complete and written to each serverside as appropriate @@ -544,7 +541,7 @@ cat("\n\nStep 7 of 8 complete: } if(monitor.progress && rm.residual.objects){ -cat("\n\nStep 8 of 8 complete: + message("\n\nStep 8 of 8 complete: Cleaned up residual output from running ds.ranksSecure @@ -552,7 +549,7 @@ cat("\n\nStep 8 of 8 complete: } if(monitor.progress && !rm.residual.objects){ - cat("\n\nStep 8 of 8 complete: + message("\n\nStep 8 of 8 complete: Residual output from running ds.ranksSecure NOT deleted @@ -562,14 +559,14 @@ cat("\n\nStep 8 of 8 complete: if(!generate.quantiles){ - cat("\n\n\n"," FINAL RANKING PROCEDURES COMPLETE: + message("\n\n\n"," FINAL RANKING PROCEDURES COMPLETE: PRIMARY RANKING OUTPUT IS IN DATA FRAME",summary.output.ranks.df, " WHICH IS SORTED BY",ranks.sort.by," AND HAS BEEN WRITTEN TO THE SERVERSIDE\n\n\n\n") info.message<-"As the argument was set to FALSE no quantiles have been estimated.Please set argument to TRUE if you want to estimate quantiles such as median, quartiles and 90th percentile" - cat("\n\n",info.message,"\n\n") + message("\n\n",info.message,"\n\n") return(info.message) } diff --git a/R/ds.rbind.R b/R/ds.rbind.R index 47e9165c2..d0aca96a8 100644 --- a/R/ds.rbind.R +++ b/R/ds.rbind.R @@ -133,7 +133,7 @@ calltext1<-call('classDS', testclass.var) next.class <- DSI::datashield.aggregate(datasources, calltext1) class.vector<-c(class.vector,next.class[[1]]) if (notify.of.progress) - cat("\n",j," of ", length(x), " elements to combine in step 1 of 2\n") + message("\n",j," of ", length(x), " elements to combine in step 1 of 2\n") } for(j in 1:length(x)) @@ -144,7 +144,7 @@ if(class.vector[j]!="data.frame" && class.vector[j]!="matrix") { colname.vector<-c(colname.vector,test.df) if (notify.of.progress) - cat("\n",j," of ", length(x), " elements to combine in step 2 of 2\n") + message("\n",j," of ", length(x), " elements to combine in step 2 of 2\n") } else { @@ -152,11 +152,11 @@ else df.names <- DSI::datashield.aggregate(datasources, calltext2) colname.vector<-c(colname.vector,df.names[[1]]) if (notify.of.progress) - cat("\n",j," of ", length(x), " elements to combine in step 2 of 2\n") + message("\n",j," of ", length(x), " elements to combine in step 2 of 2\n") } } if (notify.of.progress) - cat("\nBoth steps completed\n") + message("\nBoth steps completed\n") #CHECK FOR DUPLICATE NAMES IN COLUMN NAME VECTOR AND ADD ".k" TO THE kth REPLICATE num.duplicates<-rep(0,length(colname.vector)) diff --git a/R/ds.rep.R b/R/ds.rep.R index 2d2ce9515..2f3e03010 100644 --- a/R/ds.rep.R +++ b/R/ds.rep.R @@ -151,7 +151,7 @@ if(source.each=='s')source.each<-'serverside' #Check that source has been specified if(source.x1!="serverside"&&source.x1!="clientside") { - cat(" FAILED: if source.x1 is non-null it must be specified as + message(" FAILED: if source.x1 is non-null it must be specified as one of the following: 'clientside','serverside','c', or 's'\n\n") return('Please respecify') } @@ -174,7 +174,7 @@ if(source.each=='s')source.each<-'serverside' #Check that source has been specified if(source.times!="serverside"&&source.times!="clientside"&&!is.null(source.times)) { - cat(" FAILED: if source.times is non-null it must be specified as + message(" FAILED: if source.times is non-null it must be specified as one of the following: 'clientside','serverside','c', or 's'\n\n") return('Please respecify') } @@ -208,7 +208,7 @@ if(source.each=='s')source.each<-'serverside' #Check that source has been specified if(source.length.out!="serverside"&&source.length.out!="clientside"&&!is.null(source.length.out)) { - cat(" FAILED: if source.length.out is non-null it must be specified as + message(" FAILED: if source.length.out is non-null it must be specified as one of the following: 'clientside','serverside','c', or 's'\n\n") return('Please respecify') } @@ -243,7 +243,7 @@ if(source.each=='s')source.each<-'serverside' #Check that source has been specified if(source.each!="serverside"&&source.each!="clientside"&&!is.null(source.each)) { - cat(" FAILED: if source.each is non-null it must be specified as + message(" FAILED: if source.each is non-null it must be specified as one of the following: 'clientside','serverside','c', or 's'\n\n") return('Please respecify') } diff --git a/R/ds.sample.R b/R/ds.sample.R index 08c1b04c1..9bd6780fb 100644 --- a/R/ds.sample.R +++ b/R/ds.sample.R @@ -207,18 +207,18 @@ single.integer.seed<-c(single.integer.seed,seed.as.integer.study.specific) if(seed.as.text=="NULL"){ if (notify.of.progress) - cat("NO SEED SET IN STUDY",study.id,"\n\n") + message("NO SEED SET IN STUDY",study.id,"\n\n") } calltext <- paste0("setSeedDS(", seed.as.text, ")") if (notify.of.progress) - print(calltext) + message(calltext) ssDS.obj[[study.id]] <- DSI::datashield.aggregate(datasources[study.id], as.symbol(calltext)) } if (notify.of.progress) - cat("\n\n") + message("\n\n") diff --git a/R/ds.table.R b/R/ds.table.R index 780f9f862..e1238e2a5 100644 --- a/R/ds.table.R +++ b/R/ds.table.R @@ -424,10 +424,10 @@ if(num.valid.studies==0) if ((! table.assign) || report.chisq.tests) { validity.message<-"All studies failed for reasons identified below" - cat("\n",validity.message,"\n\n") + message("\n",validity.message,"\n\n") for(ns in 1:numsources.orig) { - cat("\nStudy",ns,": ",error.messages[[ns]],"\n") + message("\nStudy",ns,": ",error.messages[[ns]],"\n") } return(list(validity.message=validity.message,error.messages=error.messages)) @@ -476,12 +476,12 @@ for(ns in 1:numsources.orig) validity.message<-c(validity.message,message.add) } -# cat("\n",validity.message,"\n") +# message("\n",validity.message,"\n") # for(ns in 1:numsources.orig) # { -# cat("\nStudy",ns,": ",error.messages[[ns]]) +# message("\nStudy",ns,": ",error.messages[[ns]]) # } -# cat("\n\n") +# message("\n\n") #table.out<-table.out.valid #numsources<-length(table.out) @@ -492,12 +492,12 @@ if(num.valid.studies==numsources.orig) validity.message<-"Data in all studies were valid" if (! table.assign) { - cat("\n",validity.message,"\n") + message("\n",validity.message,"\n") for(ns in 1:numsources.orig) { - cat("\nStudy",ns,": ",error.messages[[ns]]) + message("\nStudy",ns,": ",error.messages[[ns]]) } - cat("\n\n") + message("\n\n") } } @@ -520,7 +520,6 @@ if(numsources>1) { all.dims.same<-FALSE return.message<-"Warning: tables in different sources have different numbers of dimensions. Please analyse and combine yourself from study.specific tables above" - print(return.message) return(return.message) } } @@ -649,7 +648,7 @@ cells.so.far<-0 table.current.study<-cbind(rvar.mark,cvar.mark,stvar.mark,count.in.cell) table.current.study[is.na(table.current.study)]<-"NA" -#cat("current study =",ns) +#message("current study =",ns) #print(table.current.study) @@ -738,7 +737,7 @@ for(oo in 1:length(table.current.study[,1])) if(d1.a!=d1||d2.a!=d2||d3.a!=d3) { return.message= "Dimensions of tables not behaving sensibly across studies.Please check the data in each study and calculate counts and percentages, yourself, using the counts from the individual studies" - cat(return.message) + message(return.message) return(return.message) } @@ -875,7 +874,7 @@ cells.so.far<-0 table.current.study<-cbind(rvar.mark,cvar.mark,count.in.cell) table.current.study[is.na(table.current.study)]<-"NA" -#cat("current study =",ns) +#message("current study =",ns) #print(table.current.study) @@ -959,7 +958,7 @@ for(oo in 1:length(table.current.study[,1])) if(d1.a!=d1||d2.a!=d2) { return.message= "Dimensions of tables not behaving sensibly across studies.Please check the data in each study and calculate counts and percentages, yourself, using the counts from the individual studies" - cat(return.message) + message(return.message) return(return.message) } @@ -1082,7 +1081,7 @@ cells.so.far<-0 table.current.study<-cbind(rvar.mark,count.in.cell) table.current.study[is.na(table.current.study)]<-"NA" -#cat("current study =",ns) +#message("current study =",ns) #print(table.current.study) @@ -1153,7 +1152,7 @@ for(oo in 1:length(table.current.study[,1])) if(d1.a!=d1) { return.message= "Dimensions of tables not behaving sensibly across studies.Please check the data in each study and calculate counts and percentages, yourself, using the counts from the individual studies" - cat(return.message) + message(return.message) return(return.message) } From 0d4755d677bcbb5abb26b4ba7d878b530159399b Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Fri, 21 Nov 2025 16:10:22 +0000 Subject: [PATCH 05/11] par -> graphics::par --- R/ds.contourPlot.R | 4 ++-- R/ds.heatmapPlot.R | 4 ++-- R/ds.histogram.R | 4 ++-- R/ds.scatterPlot.R | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/R/ds.contourPlot.R b/R/ds.contourPlot.R index 6601dd912..f1fbb3bd8 100644 --- a/R/ds.contourPlot.R +++ b/R/ds.contourPlot.R @@ -121,8 +121,8 @@ ds.contourPlot <- function(x=NULL, y=NULL, type='combine', show='all', numints=2 } # Save par and setup reseting of par values - old_par <- par(no.readonly = TRUE) - on.exit(par(old_par), add = TRUE) + old_par <- graphics::par(no.readonly = TRUE) + on.exit(graphics::par(old_par), add = TRUE) # check if the input objects are defined in all the studies isDefined(datasources, x) diff --git a/R/ds.heatmapPlot.R b/R/ds.heatmapPlot.R index 2c920e331..024224aa5 100644 --- a/R/ds.heatmapPlot.R +++ b/R/ds.heatmapPlot.R @@ -170,8 +170,8 @@ ds.heatmapPlot <- function(x=NULL, y=NULL, type="combine", show="all", numints=2 } # Save par and setup reseting of par values - old_par <- par(no.readonly = TRUE) - on.exit(par(old_par), add = TRUE) + old_par <- graphics::par(no.readonly = TRUE) + on.exit(graphics::par(old_par), add = TRUE) # check if the input objects are defined in all the studies isDefined(datasources, x) diff --git a/R/ds.histogram.R b/R/ds.histogram.R index 358c1a08c..0fbe2e209 100644 --- a/R/ds.histogram.R +++ b/R/ds.histogram.R @@ -168,8 +168,8 @@ ds.histogram <- function(x=NULL, type="split", num.breaks=10, method="smallCells } # Save par and setup reseting of par values - old_par <- par(no.readonly = TRUE) - on.exit(par(old_par), add = TRUE) + old_par <- graphics::par(no.readonly = TRUE) + on.exit(graphics::par(old_par), add = TRUE) # check if the input object is defined in all the studies isDefined(datasources, x) diff --git a/R/ds.scatterPlot.R b/R/ds.scatterPlot.R index 21e5b2629..55804b3b0 100644 --- a/R/ds.scatterPlot.R +++ b/R/ds.scatterPlot.R @@ -148,8 +148,8 @@ ds.scatterPlot <- function(x=NULL, y=NULL, method='deterministic', k=3, noise=0. } # Save par and setup reseting of par values - old_par <- par(no.readonly = TRUE) - on.exit(par(old_par), add = TRUE) + old_par <- graphics::par(no.readonly = TRUE) + on.exit(graphics::par(old_par), add = TRUE) # check if the input objects are defined in all the studies isDefined(datasources, x) From 7e944fd6c10d7f2b99ada459690dd68573beaa4e Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Fri, 21 Nov 2025 16:15:55 +0000 Subject: [PATCH 06/11] Fix mice result --- tests/testthat/test-smk-ds.mice.R | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tests/testthat/test-smk-ds.mice.R b/tests/testthat/test-smk-ds.mice.R index 19e46f740..71c0464a4 100644 --- a/tests/testthat/test-smk-ds.mice.R +++ b/tests/testthat/test-smk-ds.mice.R @@ -83,12 +83,7 @@ test_that("mice, second imputation", { expect_length(newImp$sim2, 3) expect_length(newImp$sim3, 3) expect_true("character" %in% class(newImp$sim1$method)) - if (ds.test_env$driver == "OpalDriver") - expect_equal(as.character(newImp$sim1$method), c("pmm","norm","pmm","pmm","pmm","","","","","","polyreg")) - else if (ds.test_env$driver == "ArmadilloDriver") - expect_equal(as.character(newImp$sim1$method), c("pmm","norm","pmm","pmm","pmm","","","","","","")) - else - expect_equal(as.character(newImp$sim1$method), c("pmm","norm","pmm","pmm","pmm","","","","","","polyreg")) + expect_equal(as.character(newImp$sim1$method), c("pmm","norm","pmm","pmm","pmm","","","","","","polyreg")) expect_true("matrix" %in% class(newImp$sim1$predictorMatrix)) expect_true("array" %in% class(newImp$sim1$predictorMatrix)) expect_equal(as.numeric(newImp$sim1$predictorMatrix[,1]), c(0,1,1,1,1,1,1,1,1,1,1)) From 40108ca415dde4326092a14e816cdfe2a491171a Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Fri, 21 Nov 2025 16:23:47 +0000 Subject: [PATCH 07/11] Removed ' --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 8f531e9e0..348fb26e8 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -5,7 +5,7 @@ Description: Base 'DataSHIELD' functions for the client side. 'DataSHIELD' is a you to do non-disclosive federated analysis on sensitive data. 'DataSHIELD' analytic functions have been designed to only share non disclosive summary statistics, with built in automated output checking based on statistical disclosure control. With data sites setting the threshold values for - the automated output checks. For more details, see 'citation("dsBaseClient")'. + the automated output checks. For more details, see citation("dsBaseClient"). Authors@R: c(person(given = "Paul", family = "Burton", role = c("aut"), From 584fa476ed70fa812d57ac3eaa3fd9b5d6198d26 Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Fri, 21 Nov 2025 16:39:39 +0000 Subject: [PATCH 08/11] Remove dataBootstrapUnitTests.R --- .../data_files/dataBootstrapUnitTests.R | 117 ------------------ 1 file changed, 117 deletions(-) delete mode 100644 tests/testthat/data_files/dataBootstrapUnitTests.R diff --git a/tests/testthat/data_files/dataBootstrapUnitTests.R b/tests/testthat/data_files/dataBootstrapUnitTests.R deleted file mode 100644 index 4c51af16a..000000000 --- a/tests/testthat/data_files/dataBootstrapUnitTests.R +++ /dev/null @@ -1,117 +0,0 @@ -library(remotes) -install.packages("MolgenisArmadillo", repos = "https://registry.molgenis.org/repository/R") -library(MolgenisArmadillo) -library(DSI) - -# init_studies_dataset -CNSIM1 <- load("data_files/CNSIM/CNSIM1.rda") -CNSIM2 <- load("data_files/CNSIM/CNSIM2.rda") -CNSIM3 <- load("data_files/CNSIM/CNSIM3.rda") - -DASIM1 <- load("data_files/DASIM/DASIM1.rda") -DASIM2 <- load("data_files/DASIM/DASIM2.rda") -DASIM3 <- load("data_files/DASIM/DASIM3.rda") - -EXPAND_WITH_MISSING1 <- load("data_files/SURVIVAL/EXPAND_MISSING/expand_missing_study1.rda") -EXPAND_WITH_MISSING2 <- load("data_files/SURVIVAL/EXPAND_MISSING/expand_missing_study2.rda") -EXPAND_WITH_MISSING3 <- load("data_files/SURVIVAL/EXPAND_MISSING/expand_missing_study3.rda") - -CLUSTER_INT1 <- load("data_files/CLUSTER/CLUSTER_INT1.rda") -CLUSTER_INT2 <- load("data_files/CLUSTER/CLUSTER_INT2.rda") -CLUSTER_INT3 <- load("data_files/CLUSTER/CLUSTER_INT3.rda") - -CLUSTER_SLO1 <- load("data_files/CLUSTER/CLUSTER_SLO1.rda") -CLUSTER_SLO2 <- load("data_files/CLUSTER/CLUSTER_SLO2.rda") -CLUSTER_SLO3 <- load("data_files/CLUSTER/CLUSTER_SLO3.rda") - -# init_discordant_datasets -DISCORDANT_STUDY1 <- load("data_files/DISCORDANT/discordant_study1.rda") -DISCORDANT_STUDY2 <- load("data_files/DISCORDANT/discordant_study2.rda") -DISCORDANT_STUDY3 <- load("data_files/DISCORDANT/discordant_study3.rda") - -# init_testing_datasets -DATASET1 <- load("data_files/TESTING/DATASET1.rda") -DATASET2 <- load("data_files/TESTING/DATASET2.rda") -DATASET3 <- load("data_files/TESTING/DATASET3.rda") - -FACTOR_LEVELS_DATASET1 <- load("data_files/FACTOR_LEVELS/FACTOR_LEVELS_DATASET1.rda") -FACTOR_LEVELS_DATASET2 <- load("data_files/FACTOR_LEVELS/FACTOR_LEVELS_DATASET2.rda") -FACTOR_LEVELS_DATASET3 <- load("data_files/FACTOR_LEVELS/FACTOR_LEVELS_DATASET3.rda") - - -storage_url <- "http://localhost:9000" -# access_key and secret_key can be found in the minio configuration in the docker-compose.yml -MolgenisArmadillo::armadillo.set_credentials(server = storage_url, access_key = "molgenis", secret_key = "molgenis") -MolgenisArmadillo::armadillo.create_project("testdata") - - -# init_studies_datasets -MolgenisArmadillo::armadillo.upload_table("testdata", "cnsim", CNSIM1) -MolgenisArmadillo::armadillo.upload_table("testdata", "cnsim", CNSIM2) -MolgenisArmadillo::armadillo.upload_table("testdata", "cnsim", CNSIM3) - -MolgenisArmadillo::armadillo.upload_table("testdata", "dasim", DASIM1) -MolgenisArmadillo::armadillo.upload_table("testdata", "dasim", DASIM2) -MolgenisArmadillo::armadillo.upload_table("testdata", "dasim", DASIM3) - -MolgenisArmadillo::armadillo.upload_table("testdata", "survival", EXPAND_WITH_MISSING1) -MolgenisArmadillo::armadillo.upload_table("testdata", "survival", EXPAND_WITH_MISSING2) -MolgenisArmadillo::armadillo.upload_table("testdata", "survival", EXPAND_WITH_MISSING3) - -MolgenisArmadillo::armadillo.upload_table("testdata", "cluster", CLUSTER_INT1) -MolgenisArmadillo::armadillo.upload_table("testdata", "cluster", CLUSTER_INT2) -MolgenisArmadillo::armadillo.upload_table("testdata", "cluster", CLUSTER_INT3) - -MolgenisArmadillo::armadillo.upload_table("testdata", "cluster", CLUSTER_SLO1) -MolgenisArmadillo::armadillo.upload_table("testdata", "cluster", CLUSTER_SLO2) -MolgenisArmadillo::armadillo.upload_table("testdata", "cluster", CLUSTER_SLO3) - - -# init_discordant_datasets -MolgenisArmadillo::armadillo.upload_table("testdata", "discordant", DISCORDANT_STUDY1) -MolgenisArmadillo::armadillo.upload_table("testdata", "discordant", DISCORDANT_STUDY2) -MolgenisArmadillo::armadillo.upload_table("testdata", "discordant", DISCORDANT_STUDY3) - - -# remove first column -DATASET1 <- DATASET1[,-1] -DATASET2 <- DATASET2[,-1] -DATASET3 <- DATASET3[,-1] - -# init_testing_datasets -MolgenisArmadillo::armadillo.upload_table("testdata", "testing", DATASET1) -MolgenisArmadillo::armadillo.upload_table("testdata", "testing", DATASET2) -MolgenisArmadillo::armadillo.upload_table("testdata", "testing", DATASET3) - -MolgenisArmadillo::armadillo.upload_table("testdata", "factor_levels", FACTOR_LEVELS_DATASET1) -MolgenisArmadillo::armadillo.upload_table("testdata", "factor_levels", FACTOR_LEVELS_DATASET2) -MolgenisArmadillo::armadillo.upload_table("testdata", "factor_levels", FACTOR_LEVELS_DATASET3) - -class(CNSIM1$PM_BMI_CATEGORICAL) -levels(CNSIM1$PM_BMI_CATEGORICAL) - -devtools::test() -devtools::test(filter = "datachk", invert = TRUE) -devtools::test(filter = "dataFrameSort") - - # build the login dataframe -builder <- DSI::newDSLoginBuilder() -builder$append(server = "armadillo", - url = armadillo_url, - user = "admin", - password = "admin", - table = "testdata/testing/DISCORDANT_STUDY1", - driver = "ArmadilloDriver") - -# create loginframe -logindata <- builder$build() -logindata - -datashield.logout(conns) - -conns <- datashield.login(logins = logindata, assign = TRUE) -ds.ls() -dsGetInfo(conns$armadillo) -ds.colnames("D") -datashield.errors() -dsGetInfo(conns$armadillo) From 62c3e14faa99fcdd252caf06f422cb4c075ca922 Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Fri, 21 Nov 2025 17:20:30 +0000 Subject: [PATCH 09/11] Updated docs --- docs/404.html | 2 +- docs/LICENSE.html | 2 +- docs/authors.html | 6 +++--- docs/index.html | 2 +- docs/pkgdown.yml | 2 +- docs/reference/checkClass.html | 2 +- docs/reference/colPercent.html | 2 +- docs/reference/computeWeightedMeans.html | 6 +++++- docs/reference/dot-pool_md_patterns.html | 2 +- docs/reference/ds.Boole.html | 2 +- docs/reference/ds.abs.html | 2 +- docs/reference/ds.asCharacter.html | 2 +- docs/reference/ds.asDataMatrix.html | 2 +- docs/reference/ds.asFactor.html | 2 +- docs/reference/ds.asFactorSimple.html | 2 +- docs/reference/ds.asInteger.html | 2 +- docs/reference/ds.asList.html | 2 +- docs/reference/ds.asLogical.html | 2 +- docs/reference/ds.asMatrix.html | 2 +- docs/reference/ds.asNumeric.html | 2 +- docs/reference/ds.assign.html | 2 +- docs/reference/ds.auc.html | 2 +- docs/reference/ds.boxPlot.html | 2 +- docs/reference/ds.boxPlotGG.html | 2 +- docs/reference/ds.boxPlotGG_data_Treatment.html | 2 +- docs/reference/ds.boxPlotGG_data_Treatment_numeric.html | 2 +- docs/reference/ds.boxPlotGG_numeric.html | 2 +- docs/reference/ds.boxPlotGG_table.html | 2 +- docs/reference/ds.bp_standards.html | 2 +- docs/reference/ds.c.html | 2 +- docs/reference/ds.cbind.html | 2 +- docs/reference/ds.changeRefGroup.html | 2 +- docs/reference/ds.class.html | 2 +- docs/reference/ds.colnames.html | 2 +- docs/reference/ds.completeCases.html | 2 +- docs/reference/ds.contourPlot.html | 2 +- docs/reference/ds.cor.html | 2 +- docs/reference/ds.corTest.html | 2 +- docs/reference/ds.cov.html | 2 +- docs/reference/ds.dataFrame.html | 2 +- docs/reference/ds.dataFrameFill.html | 2 +- docs/reference/ds.dataFrameSort.html | 2 +- docs/reference/ds.dataFrameSubset.html | 2 +- docs/reference/ds.densityGrid.html | 2 +- docs/reference/ds.dim.html | 2 +- docs/reference/ds.dmtC2S.html | 2 +- docs/reference/ds.elspline.html | 2 +- docs/reference/ds.exists.html | 2 +- docs/reference/ds.exp.html | 2 +- docs/reference/ds.extractQuantiles.html | 2 +- docs/reference/ds.forestplot.html | 6 +++++- docs/reference/ds.gamlss.html | 2 +- docs/reference/ds.getWGSR.html | 2 +- docs/reference/ds.glm.html | 2 +- docs/reference/ds.glmPredict.html | 2 +- docs/reference/ds.glmSLMA.html | 2 +- docs/reference/ds.glmSummary.html | 2 +- docs/reference/ds.glmerSLMA.html | 2 +- docs/reference/ds.heatmapPlot.html | 2 +- docs/reference/ds.hetcor.html | 2 +- docs/reference/ds.histogram.html | 2 +- docs/reference/ds.igb_standards.html | 2 +- docs/reference/ds.isNA.html | 2 +- docs/reference/ds.isValid.html | 2 +- docs/reference/ds.kurtosis.html | 2 +- docs/reference/ds.length.html | 2 +- docs/reference/ds.levels.html | 2 +- docs/reference/ds.lexis.html | 2 +- docs/reference/ds.list.html | 2 +- docs/reference/ds.listClientsideFunctions.html | 2 +- docs/reference/ds.listDisclosureSettings.html | 2 +- docs/reference/ds.listOpals.html | 2 +- docs/reference/ds.listServersideFunctions.html | 2 +- docs/reference/ds.lmerSLMA.html | 2 +- docs/reference/ds.log.html | 2 +- docs/reference/ds.look.html | 2 +- docs/reference/ds.ls.html | 2 +- docs/reference/ds.lspline.html | 2 +- docs/reference/ds.make.html | 2 +- docs/reference/ds.matrix.html | 2 +- docs/reference/ds.matrixDet.html | 2 +- docs/reference/ds.matrixDet.report.html | 2 +- docs/reference/ds.matrixDiag.html | 2 +- docs/reference/ds.matrixDimnames.html | 2 +- docs/reference/ds.matrixInvert.html | 2 +- docs/reference/ds.matrixMult.html | 2 +- docs/reference/ds.matrixTranspose.html | 2 +- docs/reference/ds.mdPattern.html | 2 +- docs/reference/ds.mean.html | 2 +- docs/reference/ds.meanByClass.html | 2 +- docs/reference/ds.meanSdGp.html | 2 +- docs/reference/ds.merge.html | 2 +- docs/reference/ds.message.html | 2 +- docs/reference/ds.metadata.html | 2 +- docs/reference/ds.mice.html | 2 +- docs/reference/ds.names.html | 2 +- docs/reference/ds.ns.html | 2 +- docs/reference/ds.numNA.html | 2 +- docs/reference/ds.qlspline.html | 2 +- docs/reference/ds.quantileMean.html | 2 +- docs/reference/ds.rBinom.html | 2 +- docs/reference/ds.rNorm.html | 2 +- docs/reference/ds.rPois.html | 2 +- docs/reference/ds.rUnif.html | 2 +- docs/reference/ds.ranksSecure.html | 2 +- docs/reference/ds.rbind.html | 2 +- docs/reference/ds.reShape.html | 2 +- docs/reference/ds.recodeLevels.html | 2 +- docs/reference/ds.recodeValues.html | 2 +- docs/reference/ds.rep.html | 2 +- docs/reference/ds.replaceNA.html | 2 +- docs/reference/ds.rm.html | 2 +- docs/reference/ds.rowColCalc.html | 2 +- docs/reference/ds.sample.html | 2 +- docs/reference/ds.scatterPlot.html | 2 +- docs/reference/ds.seq.html | 2 +- docs/reference/ds.setDefaultOpals.html | 2 +- docs/reference/ds.setSeed.html | 2 +- docs/reference/ds.skewness.html | 2 +- docs/reference/ds.sqrt.html | 2 +- docs/reference/ds.subset.html | 2 +- docs/reference/ds.subsetByClass.html | 2 +- docs/reference/ds.summary.html | 2 +- docs/reference/ds.table.html | 2 +- docs/reference/ds.table1D.html | 2 +- docs/reference/ds.table2D.html | 2 +- docs/reference/ds.tapply.assign.html | 2 +- docs/reference/ds.tapply.html | 2 +- docs/reference/ds.testObjExists.html | 2 +- docs/reference/ds.unList.html | 2 +- docs/reference/ds.unique.html | 2 +- docs/reference/ds.var.html | 2 +- docs/reference/ds.vectorCalc.html | 2 +- docs/reference/extract.html | 2 +- docs/reference/getPooledMean.html | 2 +- docs/reference/getPooledVar.html | 2 +- docs/reference/glmChecks.html | 2 +- docs/reference/index.html | 6 +----- docs/reference/isAssigned.html | 2 +- docs/reference/isDefined.html | 2 +- docs/reference/logical2int.html | 2 +- docs/reference/meanByClassHelper0a.html | 2 +- docs/reference/meanByClassHelper0b.html | 2 +- docs/reference/meanByClassHelper1.html | 2 +- docs/reference/meanByClassHelper2.html | 2 +- docs/reference/meanByClassHelper3.html | 2 +- docs/reference/meanByClassHelper4.html | 2 +- docs/reference/rowPercent.html | 2 +- docs/reference/subsetHelper.html | 2 +- 149 files changed, 159 insertions(+), 155 deletions(-) diff --git a/docs/404.html b/docs/404.html index 0679d8def..eaa2175ab 100644 --- a/docs/404.html +++ b/docs/404.html @@ -32,7 +32,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/LICENSE.html b/docs/LICENSE.html index 8c771da38..a0698c657 100644 --- a/docs/LICENSE.html +++ b/docs/LICENSE.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/authors.html b/docs/authors.html index 564ece67f..a4610f7f6 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 @@ -102,12 +102,12 @@

Citation

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 7.0.0-9000. +R package version 7.0.0.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 Yannick Marcon and Tom Bishop and Amadou Gaye and Xavier Escribà-Montagut and Stuart Wheater},
-  note = {R package version 7.0.0-9000},
+  note = {R package version 7.0.0.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.” diff --git a/docs/index.html b/docs/index.html index 7841b0d65..d9e326524 100644 --- a/docs/index.html +++ b/docs/index.html @@ -33,7 +33,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 3ed574488..7b44fe056 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -2,4 +2,4 @@ pandoc: 3.1.3 pkgdown: 2.2.0 pkgdown_sha: ~ articles: {} -last_built: 2025-11-14T18:39Z +last_built: 2025-11-21T17:12Z diff --git a/docs/reference/checkClass.html b/docs/reference/checkClass.html index c46de990a..3dbe0638f 100644 --- a/docs/reference/checkClass.html +++ b/docs/reference/checkClass.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/colPercent.html b/docs/reference/colPercent.html index cbd981310..e526cfed4 100644 --- a/docs/reference/colPercent.html +++ b/docs/reference/colPercent.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/computeWeightedMeans.html b/docs/reference/computeWeightedMeans.html index 679684919..8a3962194 100644 --- a/docs/reference/computeWeightedMeans.html +++ b/docs/reference/computeWeightedMeans.html @@ -19,7 +19,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 @@ -71,6 +71,10 @@

Arguments

character vector of the columns to group by

+
+

Value

+

Returns a data table object with computed weighted means.

+

Author

Matthias Bannert, Gabriel Bucur

diff --git a/docs/reference/dot-pool_md_patterns.html b/docs/reference/dot-pool_md_patterns.html index f25e02d13..e62ca7449 100644 --- a/docs/reference/dot-pool_md_patterns.html +++ b/docs/reference/dot-pool_md_patterns.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000
diff --git a/docs/reference/ds.Boole.html b/docs/reference/ds.Boole.html index 640649fd5..dfee7fdeb 100644 --- a/docs/reference/ds.Boole.html +++ b/docs/reference/ds.Boole.html @@ -20,7 +20,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.abs.html b/docs/reference/ds.abs.html index 3861996eb..6c7416d19 100644 --- a/docs/reference/ds.abs.html +++ b/docs/reference/ds.abs.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.asCharacter.html b/docs/reference/ds.asCharacter.html index 451b75340..3138fd8db 100644 --- a/docs/reference/ds.asCharacter.html +++ b/docs/reference/ds.asCharacter.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.asDataMatrix.html b/docs/reference/ds.asDataMatrix.html index c1e781d66..c648b5751 100644 --- a/docs/reference/ds.asDataMatrix.html +++ b/docs/reference/ds.asDataMatrix.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.asFactor.html b/docs/reference/ds.asFactor.html index bca23a519..1066af69b 100644 --- a/docs/reference/ds.asFactor.html +++ b/docs/reference/ds.asFactor.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.asFactorSimple.html b/docs/reference/ds.asFactorSimple.html index db97ca6da..318c0cb51 100644 --- a/docs/reference/ds.asFactorSimple.html +++ b/docs/reference/ds.asFactorSimple.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.asInteger.html b/docs/reference/ds.asInteger.html index 39687a0a2..a8880380a 100644 --- a/docs/reference/ds.asInteger.html +++ b/docs/reference/ds.asInteger.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.asList.html b/docs/reference/ds.asList.html index d9326df29..8e1a65757 100644 --- a/docs/reference/ds.asList.html +++ b/docs/reference/ds.asList.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.asLogical.html b/docs/reference/ds.asLogical.html index e8cd5be2e..4399676b2 100644 --- a/docs/reference/ds.asLogical.html +++ b/docs/reference/ds.asLogical.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.asMatrix.html b/docs/reference/ds.asMatrix.html index bc02ef019..bca616735 100644 --- a/docs/reference/ds.asMatrix.html +++ b/docs/reference/ds.asMatrix.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.asNumeric.html b/docs/reference/ds.asNumeric.html index a925237c8..74c904736 100644 --- a/docs/reference/ds.asNumeric.html +++ b/docs/reference/ds.asNumeric.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.assign.html b/docs/reference/ds.assign.html index 4d45c9e3d..a67e73801 100644 --- a/docs/reference/ds.assign.html +++ b/docs/reference/ds.assign.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.auc.html b/docs/reference/ds.auc.html index 9d5e5ec26..9e38f92d5 100644 --- a/docs/reference/ds.auc.html +++ b/docs/reference/ds.auc.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.boxPlot.html b/docs/reference/ds.boxPlot.html index 623dce9f3..6e273535b 100644 --- a/docs/reference/ds.boxPlot.html +++ b/docs/reference/ds.boxPlot.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.boxPlotGG.html b/docs/reference/ds.boxPlotGG.html index 859eb74e5..00ff6fc35 100644 --- a/docs/reference/ds.boxPlotGG.html +++ b/docs/reference/ds.boxPlotGG.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.boxPlotGG_data_Treatment.html b/docs/reference/ds.boxPlotGG_data_Treatment.html index 7e047545b..3c303a3fb 100644 --- a/docs/reference/ds.boxPlotGG_data_Treatment.html +++ b/docs/reference/ds.boxPlotGG_data_Treatment.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.boxPlotGG_data_Treatment_numeric.html b/docs/reference/ds.boxPlotGG_data_Treatment_numeric.html index 86b7e274b..c40d3302e 100644 --- a/docs/reference/ds.boxPlotGG_data_Treatment_numeric.html +++ b/docs/reference/ds.boxPlotGG_data_Treatment_numeric.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.boxPlotGG_numeric.html b/docs/reference/ds.boxPlotGG_numeric.html index 14bc256c0..2026f88dc 100644 --- a/docs/reference/ds.boxPlotGG_numeric.html +++ b/docs/reference/ds.boxPlotGG_numeric.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.boxPlotGG_table.html b/docs/reference/ds.boxPlotGG_table.html index 602669afc..819848c97 100644 --- a/docs/reference/ds.boxPlotGG_table.html +++ b/docs/reference/ds.boxPlotGG_table.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.bp_standards.html b/docs/reference/ds.bp_standards.html index a059e099d..e44dc25ad 100644 --- a/docs/reference/ds.bp_standards.html +++ b/docs/reference/ds.bp_standards.html @@ -20,7 +20,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.c.html b/docs/reference/ds.c.html index 775fde7e5..301e44812 100644 --- a/docs/reference/ds.c.html +++ b/docs/reference/ds.c.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.cbind.html b/docs/reference/ds.cbind.html index fb85d3789..987a131c6 100644 --- a/docs/reference/ds.cbind.html +++ b/docs/reference/ds.cbind.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.changeRefGroup.html b/docs/reference/ds.changeRefGroup.html index d52cbc264..38ff5e9cb 100644 --- a/docs/reference/ds.changeRefGroup.html +++ b/docs/reference/ds.changeRefGroup.html @@ -19,7 +19,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.class.html b/docs/reference/ds.class.html index 2d7ddab81..f2aeb12ba 100644 --- a/docs/reference/ds.class.html +++ b/docs/reference/ds.class.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.colnames.html b/docs/reference/ds.colnames.html index ab4348bdd..4e90a603c 100644 --- a/docs/reference/ds.colnames.html +++ b/docs/reference/ds.colnames.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.completeCases.html b/docs/reference/ds.completeCases.html index 517b16491..13914f3c0 100644 --- a/docs/reference/ds.completeCases.html +++ b/docs/reference/ds.completeCases.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.contourPlot.html b/docs/reference/ds.contourPlot.html index 6cd413250..91e6c727c 100644 --- a/docs/reference/ds.contourPlot.html +++ b/docs/reference/ds.contourPlot.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.cor.html b/docs/reference/ds.cor.html index e5c1dbbbe..3b7a100b9 100644 --- a/docs/reference/ds.cor.html +++ b/docs/reference/ds.cor.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.corTest.html b/docs/reference/ds.corTest.html index e7a4090ff..1bf393c89 100644 --- a/docs/reference/ds.corTest.html +++ b/docs/reference/ds.corTest.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.cov.html b/docs/reference/ds.cov.html index 9b4caca1c..dec6c58f5 100644 --- a/docs/reference/ds.cov.html +++ b/docs/reference/ds.cov.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.dataFrame.html b/docs/reference/ds.dataFrame.html index 422baa6df..9a7790b55 100644 --- a/docs/reference/ds.dataFrame.html +++ b/docs/reference/ds.dataFrame.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.dataFrameFill.html b/docs/reference/ds.dataFrameFill.html index b6ac6d67c..b64d23b38 100644 --- a/docs/reference/ds.dataFrameFill.html +++ b/docs/reference/ds.dataFrameFill.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.dataFrameSort.html b/docs/reference/ds.dataFrameSort.html index b8a5dc889..0fad3dd87 100644 --- a/docs/reference/ds.dataFrameSort.html +++ b/docs/reference/ds.dataFrameSort.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.dataFrameSubset.html b/docs/reference/ds.dataFrameSubset.html index 6e9f99a0b..eb8a1f3a0 100644 --- a/docs/reference/ds.dataFrameSubset.html +++ b/docs/reference/ds.dataFrameSubset.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.densityGrid.html b/docs/reference/ds.densityGrid.html index 3d58398a7..4055ac5d7 100644 --- a/docs/reference/ds.densityGrid.html +++ b/docs/reference/ds.densityGrid.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.dim.html b/docs/reference/ds.dim.html index f6d963436..4805c721b 100644 --- a/docs/reference/ds.dim.html +++ b/docs/reference/ds.dim.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.dmtC2S.html b/docs/reference/ds.dmtC2S.html index 6d32132b1..046e46dfb 100644 --- a/docs/reference/ds.dmtC2S.html +++ b/docs/reference/ds.dmtC2S.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.elspline.html b/docs/reference/ds.elspline.html index 5a69199ad..877fb3e5f 100644 --- a/docs/reference/ds.elspline.html +++ b/docs/reference/ds.elspline.html @@ -20,7 +20,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.exists.html b/docs/reference/ds.exists.html index 16592e1ca..4e434c2d1 100644 --- a/docs/reference/ds.exists.html +++ b/docs/reference/ds.exists.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.exp.html b/docs/reference/ds.exp.html index f0e795985..e6a3e2415 100644 --- a/docs/reference/ds.exp.html +++ b/docs/reference/ds.exp.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.extractQuantiles.html b/docs/reference/ds.extractQuantiles.html index 1cc7fdaea..a05cd2eb2 100644 --- a/docs/reference/ds.extractQuantiles.html +++ b/docs/reference/ds.extractQuantiles.html @@ -26,7 +26,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.forestplot.html b/docs/reference/ds.forestplot.html index 1ffb3d19d..6fdd49375 100644 --- a/docs/reference/ds.forestplot.html +++ b/docs/reference/ds.forestplot.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 @@ -73,6 +73,10 @@

Arguments

See details from ?meta::metagen for the different options.

+
+

Value

+

Results a foresplot object created with `meta::forest`.

+

Examples

diff --git a/docs/reference/ds.gamlss.html b/docs/reference/ds.gamlss.html index 79a8fcc25..63b40ac9b 100644 --- a/docs/reference/ds.gamlss.html +++ b/docs/reference/ds.gamlss.html @@ -23,7 +23,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000
diff --git a/docs/reference/ds.getWGSR.html b/docs/reference/ds.getWGSR.html index 9228b50f9..c341b2f27 100644 --- a/docs/reference/ds.getWGSR.html +++ b/docs/reference/ds.getWGSR.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.glm.html b/docs/reference/ds.glm.html index 97bcc3811..ddd6de576 100644 --- a/docs/reference/ds.glm.html +++ b/docs/reference/ds.glm.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.glmPredict.html b/docs/reference/ds.glmPredict.html index 3678794aa..e1f5ef23f 100644 --- a/docs/reference/ds.glmPredict.html +++ b/docs/reference/ds.glmPredict.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.glmSLMA.html b/docs/reference/ds.glmSLMA.html index 076528d36..6d9d6bad6 100644 --- a/docs/reference/ds.glmSLMA.html +++ b/docs/reference/ds.glmSLMA.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.glmSummary.html b/docs/reference/ds.glmSummary.html index 83ac5efba..8364a59b8 100644 --- a/docs/reference/ds.glmSummary.html +++ b/docs/reference/ds.glmSummary.html @@ -20,7 +20,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.glmerSLMA.html b/docs/reference/ds.glmerSLMA.html index 4217f71e4..30b922258 100644 --- a/docs/reference/ds.glmerSLMA.html +++ b/docs/reference/ds.glmerSLMA.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.heatmapPlot.html b/docs/reference/ds.heatmapPlot.html index d2476cc13..8820c3a17 100644 --- a/docs/reference/ds.heatmapPlot.html +++ b/docs/reference/ds.heatmapPlot.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.hetcor.html b/docs/reference/ds.hetcor.html index f0786da14..624f2d552 100644 --- a/docs/reference/ds.hetcor.html +++ b/docs/reference/ds.hetcor.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.histogram.html b/docs/reference/ds.histogram.html index 590becf66..34035b2dd 100644 --- a/docs/reference/ds.histogram.html +++ b/docs/reference/ds.histogram.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.igb_standards.html b/docs/reference/ds.igb_standards.html index c549fdd5f..d7470a1c6 100644 --- a/docs/reference/ds.igb_standards.html +++ b/docs/reference/ds.igb_standards.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.isNA.html b/docs/reference/ds.isNA.html index abfbca319..587e51a88 100644 --- a/docs/reference/ds.isNA.html +++ b/docs/reference/ds.isNA.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.isValid.html b/docs/reference/ds.isValid.html index dd82d01d0..9ba978046 100644 --- a/docs/reference/ds.isValid.html +++ b/docs/reference/ds.isValid.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.kurtosis.html b/docs/reference/ds.kurtosis.html index 941711a91..e765331ec 100644 --- a/docs/reference/ds.kurtosis.html +++ b/docs/reference/ds.kurtosis.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.length.html b/docs/reference/ds.length.html index a4604fce2..654c28aff 100644 --- a/docs/reference/ds.length.html +++ b/docs/reference/ds.length.html @@ -19,7 +19,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.levels.html b/docs/reference/ds.levels.html index afc142d43..dfd294163 100644 --- a/docs/reference/ds.levels.html +++ b/docs/reference/ds.levels.html @@ -19,7 +19,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.lexis.html b/docs/reference/ds.lexis.html index bd9c936c1..131b98aee 100644 --- a/docs/reference/ds.lexis.html +++ b/docs/reference/ds.lexis.html @@ -19,7 +19,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.list.html b/docs/reference/ds.list.html index f52a0c0ac..9e0cd5304 100644 --- a/docs/reference/ds.list.html +++ b/docs/reference/ds.list.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.listClientsideFunctions.html b/docs/reference/ds.listClientsideFunctions.html index 0722c2372..defc02cdb 100644 --- a/docs/reference/ds.listClientsideFunctions.html +++ b/docs/reference/ds.listClientsideFunctions.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.listDisclosureSettings.html b/docs/reference/ds.listDisclosureSettings.html index 6c4a0e68a..d539d43cc 100644 --- a/docs/reference/ds.listDisclosureSettings.html +++ b/docs/reference/ds.listDisclosureSettings.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.listOpals.html b/docs/reference/ds.listOpals.html index 15430f4d3..90f473b7a 100644 --- a/docs/reference/ds.listOpals.html +++ b/docs/reference/ds.listOpals.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.listServersideFunctions.html b/docs/reference/ds.listServersideFunctions.html index 217e51845..1395e31e3 100644 --- a/docs/reference/ds.listServersideFunctions.html +++ b/docs/reference/ds.listServersideFunctions.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.lmerSLMA.html b/docs/reference/ds.lmerSLMA.html index e9503af73..feb1b804b 100644 --- a/docs/reference/ds.lmerSLMA.html +++ b/docs/reference/ds.lmerSLMA.html @@ -19,7 +19,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.log.html b/docs/reference/ds.log.html index e7c5823b0..702c219bb 100644 --- a/docs/reference/ds.log.html +++ b/docs/reference/ds.log.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.look.html b/docs/reference/ds.look.html index 8797b98e1..68d0fbde7 100644 --- a/docs/reference/ds.look.html +++ b/docs/reference/ds.look.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.ls.html b/docs/reference/ds.ls.html index 08bc8596a..2413c6855 100644 --- a/docs/reference/ds.ls.html +++ b/docs/reference/ds.ls.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.lspline.html b/docs/reference/ds.lspline.html index 5e0eb5174..98609889f 100644 --- a/docs/reference/ds.lspline.html +++ b/docs/reference/ds.lspline.html @@ -20,7 +20,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.make.html b/docs/reference/ds.make.html index d53b6265b..38bd3b256 100644 --- a/docs/reference/ds.make.html +++ b/docs/reference/ds.make.html @@ -19,7 +19,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.matrix.html b/docs/reference/ds.matrix.html index 082aaecd2..689d88dac 100644 --- a/docs/reference/ds.matrix.html +++ b/docs/reference/ds.matrix.html @@ -20,7 +20,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.matrixDet.html b/docs/reference/ds.matrixDet.html index 4d9debf01..fd12e5ccf 100644 --- a/docs/reference/ds.matrixDet.html +++ b/docs/reference/ds.matrixDet.html @@ -20,7 +20,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.matrixDet.report.html b/docs/reference/ds.matrixDet.report.html index f2a6fc036..a72b9191b 100644 --- a/docs/reference/ds.matrixDet.report.html +++ b/docs/reference/ds.matrixDet.report.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.matrixDiag.html b/docs/reference/ds.matrixDiag.html index eb01209f7..4842f2afc 100644 --- a/docs/reference/ds.matrixDiag.html +++ b/docs/reference/ds.matrixDiag.html @@ -19,7 +19,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.matrixDimnames.html b/docs/reference/ds.matrixDimnames.html index 16d7c4638..0d52dc684 100644 --- a/docs/reference/ds.matrixDimnames.html +++ b/docs/reference/ds.matrixDimnames.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.matrixInvert.html b/docs/reference/ds.matrixInvert.html index bb517cc6c..ef812dc09 100644 --- a/docs/reference/ds.matrixInvert.html +++ b/docs/reference/ds.matrixInvert.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.matrixMult.html b/docs/reference/ds.matrixMult.html index 6c3b136b6..cf288087d 100644 --- a/docs/reference/ds.matrixMult.html +++ b/docs/reference/ds.matrixMult.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.matrixTranspose.html b/docs/reference/ds.matrixTranspose.html index 91a25ba7b..bfe3df4fa 100644 --- a/docs/reference/ds.matrixTranspose.html +++ b/docs/reference/ds.matrixTranspose.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.mdPattern.html b/docs/reference/ds.mdPattern.html index 8e298f079..4e2b3b447 100644 --- a/docs/reference/ds.mdPattern.html +++ b/docs/reference/ds.mdPattern.html @@ -19,7 +19,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.mean.html b/docs/reference/ds.mean.html index 2cb23d3a2..a34248d52 100644 --- a/docs/reference/ds.mean.html +++ b/docs/reference/ds.mean.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.meanByClass.html b/docs/reference/ds.meanByClass.html index 0f977fad4..9f52098e1 100644 --- a/docs/reference/ds.meanByClass.html +++ b/docs/reference/ds.meanByClass.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.meanSdGp.html b/docs/reference/ds.meanSdGp.html index 4257089ce..94a474a0e 100644 --- a/docs/reference/ds.meanSdGp.html +++ b/docs/reference/ds.meanSdGp.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.merge.html b/docs/reference/ds.merge.html index adf520da6..b42339e8d 100644 --- a/docs/reference/ds.merge.html +++ b/docs/reference/ds.merge.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.message.html b/docs/reference/ds.message.html index 187f124ad..0077360ba 100644 --- a/docs/reference/ds.message.html +++ b/docs/reference/ds.message.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.metadata.html b/docs/reference/ds.metadata.html index a214bacdb..08b782e40 100644 --- a/docs/reference/ds.metadata.html +++ b/docs/reference/ds.metadata.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.mice.html b/docs/reference/ds.mice.html index 01ad1b4bb..4435d2c58 100644 --- a/docs/reference/ds.mice.html +++ b/docs/reference/ds.mice.html @@ -25,7 +25,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.names.html b/docs/reference/ds.names.html index 034da93ce..2cbc5febb 100644 --- a/docs/reference/ds.names.html +++ b/docs/reference/ds.names.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.ns.html b/docs/reference/ds.ns.html index ed8736112..4542ab75f 100644 --- a/docs/reference/ds.ns.html +++ b/docs/reference/ds.ns.html @@ -19,7 +19,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.numNA.html b/docs/reference/ds.numNA.html index 7afe0ddd1..ced8a0da9 100644 --- a/docs/reference/ds.numNA.html +++ b/docs/reference/ds.numNA.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.qlspline.html b/docs/reference/ds.qlspline.html index db4f9d0d9..71b503c1b 100644 --- a/docs/reference/ds.qlspline.html +++ b/docs/reference/ds.qlspline.html @@ -20,7 +20,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.quantileMean.html b/docs/reference/ds.quantileMean.html index 4039c6466..0f9781a5c 100644 --- a/docs/reference/ds.quantileMean.html +++ b/docs/reference/ds.quantileMean.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.rBinom.html b/docs/reference/ds.rBinom.html index 290662862..933ce5315 100644 --- a/docs/reference/ds.rBinom.html +++ b/docs/reference/ds.rBinom.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.rNorm.html b/docs/reference/ds.rNorm.html index dc4f07f6b..eda7910f8 100644 --- a/docs/reference/ds.rNorm.html +++ b/docs/reference/ds.rNorm.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.rPois.html b/docs/reference/ds.rPois.html index 9ca4cc654..3127b3bb3 100644 --- a/docs/reference/ds.rPois.html +++ b/docs/reference/ds.rPois.html @@ -19,7 +19,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.rUnif.html b/docs/reference/ds.rUnif.html index 69842261f..1008dc8b4 100644 --- a/docs/reference/ds.rUnif.html +++ b/docs/reference/ds.rUnif.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.ranksSecure.html b/docs/reference/ds.ranksSecure.html index 1615a37f0..346d484aa 100644 --- a/docs/reference/ds.ranksSecure.html +++ b/docs/reference/ds.ranksSecure.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.rbind.html b/docs/reference/ds.rbind.html index dce51b5a4..2f68e9a88 100644 --- a/docs/reference/ds.rbind.html +++ b/docs/reference/ds.rbind.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.reShape.html b/docs/reference/ds.reShape.html index 8ac2b2d1f..e91469c7f 100644 --- a/docs/reference/ds.reShape.html +++ b/docs/reference/ds.reShape.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.recodeLevels.html b/docs/reference/ds.recodeLevels.html index 490a2dbc0..70c5d8d19 100644 --- a/docs/reference/ds.recodeLevels.html +++ b/docs/reference/ds.recodeLevels.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.recodeValues.html b/docs/reference/ds.recodeValues.html index 3e0eb20df..6a047e4c0 100644 --- a/docs/reference/ds.recodeValues.html +++ b/docs/reference/ds.recodeValues.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.rep.html b/docs/reference/ds.rep.html index fe92d5ba7..cff475188 100644 --- a/docs/reference/ds.rep.html +++ b/docs/reference/ds.rep.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.replaceNA.html b/docs/reference/ds.replaceNA.html index 7a546c6dc..79fb2aa63 100644 --- a/docs/reference/ds.replaceNA.html +++ b/docs/reference/ds.replaceNA.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.rm.html b/docs/reference/ds.rm.html index c840b5acc..4685a78f2 100644 --- a/docs/reference/ds.rm.html +++ b/docs/reference/ds.rm.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.rowColCalc.html b/docs/reference/ds.rowColCalc.html index 0672f35e5..24460263e 100644 --- a/docs/reference/ds.rowColCalc.html +++ b/docs/reference/ds.rowColCalc.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.sample.html b/docs/reference/ds.sample.html index 209305335..c3832a02e 100644 --- a/docs/reference/ds.sample.html +++ b/docs/reference/ds.sample.html @@ -19,7 +19,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.scatterPlot.html b/docs/reference/ds.scatterPlot.html index 292c74600..a9017b4f2 100644 --- a/docs/reference/ds.scatterPlot.html +++ b/docs/reference/ds.scatterPlot.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.seq.html b/docs/reference/ds.seq.html index 256b2d3dd..f7a8ae1c8 100644 --- a/docs/reference/ds.seq.html +++ b/docs/reference/ds.seq.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.setDefaultOpals.html b/docs/reference/ds.setDefaultOpals.html index d08715b1b..b37d6871a 100644 --- a/docs/reference/ds.setDefaultOpals.html +++ b/docs/reference/ds.setDefaultOpals.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.setSeed.html b/docs/reference/ds.setSeed.html index b3a4ee331..86b102aff 100644 --- a/docs/reference/ds.setSeed.html +++ b/docs/reference/ds.setSeed.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.skewness.html b/docs/reference/ds.skewness.html index f08153d03..01818e3a5 100644 --- a/docs/reference/ds.skewness.html +++ b/docs/reference/ds.skewness.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.sqrt.html b/docs/reference/ds.sqrt.html index 48a50b9c5..16679f1b5 100644 --- a/docs/reference/ds.sqrt.html +++ b/docs/reference/ds.sqrt.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.subset.html b/docs/reference/ds.subset.html index 41d6610b1..9bcfb801a 100644 --- a/docs/reference/ds.subset.html +++ b/docs/reference/ds.subset.html @@ -19,7 +19,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.subsetByClass.html b/docs/reference/ds.subsetByClass.html index 07cfd851a..8ac9d4a7c 100644 --- a/docs/reference/ds.subsetByClass.html +++ b/docs/reference/ds.subsetByClass.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.summary.html b/docs/reference/ds.summary.html index cc6212155..886a3681b 100644 --- a/docs/reference/ds.summary.html +++ b/docs/reference/ds.summary.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.table.html b/docs/reference/ds.table.html index ee65fbb16..c46ad065b 100644 --- a/docs/reference/ds.table.html +++ b/docs/reference/ds.table.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.table1D.html b/docs/reference/ds.table1D.html index 0fa5f1d6f..d7199dfaa 100644 --- a/docs/reference/ds.table1D.html +++ b/docs/reference/ds.table1D.html @@ -19,7 +19,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.table2D.html b/docs/reference/ds.table2D.html index 3a37d0612..b2bfea29b 100644 --- a/docs/reference/ds.table2D.html +++ b/docs/reference/ds.table2D.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.tapply.assign.html b/docs/reference/ds.tapply.assign.html index 8157c3af0..d1ca8e8fa 100644 --- a/docs/reference/ds.tapply.assign.html +++ b/docs/reference/ds.tapply.assign.html @@ -19,7 +19,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.tapply.html b/docs/reference/ds.tapply.html index 01ffac390..39c9f854f 100644 --- a/docs/reference/ds.tapply.html +++ b/docs/reference/ds.tapply.html @@ -19,7 +19,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.testObjExists.html b/docs/reference/ds.testObjExists.html index 18d73d451..bc7e9edf8 100644 --- a/docs/reference/ds.testObjExists.html +++ b/docs/reference/ds.testObjExists.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.unList.html b/docs/reference/ds.unList.html index fa58b4b79..dfb459fac 100644 --- a/docs/reference/ds.unList.html +++ b/docs/reference/ds.unList.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.unique.html b/docs/reference/ds.unique.html index 1b1d2fdba..08d6ef9b1 100644 --- a/docs/reference/ds.unique.html +++ b/docs/reference/ds.unique.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.var.html b/docs/reference/ds.var.html index 7b8c2ce8a..68691eb1e 100644 --- a/docs/reference/ds.var.html +++ b/docs/reference/ds.var.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/ds.vectorCalc.html b/docs/reference/ds.vectorCalc.html index dbcf7e382..97fabde9e 100644 --- a/docs/reference/ds.vectorCalc.html +++ b/docs/reference/ds.vectorCalc.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/extract.html b/docs/reference/extract.html index f97db6542..fda0edaea 100644 --- a/docs/reference/extract.html +++ b/docs/reference/extract.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/getPooledMean.html b/docs/reference/getPooledMean.html index d29193d40..430364814 100644 --- a/docs/reference/getPooledMean.html +++ b/docs/reference/getPooledMean.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/getPooledVar.html b/docs/reference/getPooledVar.html index 0800aa8be..091ac32aa 100644 --- a/docs/reference/getPooledVar.html +++ b/docs/reference/getPooledVar.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/glmChecks.html b/docs/reference/glmChecks.html index 76843a09a..dc6829986 100644 --- a/docs/reference/glmChecks.html +++ b/docs/reference/glmChecks.html @@ -18,7 +18,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/index.html b/docs/reference/index.html index 03bec3a0b..9b99643d5 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 @@ -42,10 +42,6 @@

All functions

-

computeWeightedMeans()

- -

Compute Weighted Mean by Group

-

ds.Boole()

Converts a server-side R object into Boolean indicators

diff --git a/docs/reference/isAssigned.html b/docs/reference/isAssigned.html index 4cb95d0e8..41addd078 100644 --- a/docs/reference/isAssigned.html +++ b/docs/reference/isAssigned.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/isDefined.html b/docs/reference/isDefined.html index 8598f4113..ba4e5c446 100644 --- a/docs/reference/isDefined.html +++ b/docs/reference/isDefined.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/logical2int.html b/docs/reference/logical2int.html index f3514a099..670aee303 100644 --- a/docs/reference/logical2int.html +++ b/docs/reference/logical2int.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/meanByClassHelper0a.html b/docs/reference/meanByClassHelper0a.html index fc46d0d49..8f51caa21 100644 --- a/docs/reference/meanByClassHelper0a.html +++ b/docs/reference/meanByClassHelper0a.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/meanByClassHelper0b.html b/docs/reference/meanByClassHelper0b.html index 5309ce9f2..ec8d6dcec 100644 --- a/docs/reference/meanByClassHelper0b.html +++ b/docs/reference/meanByClassHelper0b.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/meanByClassHelper1.html b/docs/reference/meanByClassHelper1.html index 461290b67..713300156 100644 --- a/docs/reference/meanByClassHelper1.html +++ b/docs/reference/meanByClassHelper1.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/meanByClassHelper2.html b/docs/reference/meanByClassHelper2.html index aed876f7b..6ed196948 100644 --- a/docs/reference/meanByClassHelper2.html +++ b/docs/reference/meanByClassHelper2.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/meanByClassHelper3.html b/docs/reference/meanByClassHelper3.html index 938fd9718..2a925d936 100644 --- a/docs/reference/meanByClassHelper3.html +++ b/docs/reference/meanByClassHelper3.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/meanByClassHelper4.html b/docs/reference/meanByClassHelper4.html index 26f128fcc..d9e0e16a9 100644 --- a/docs/reference/meanByClassHelper4.html +++ b/docs/reference/meanByClassHelper4.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/rowPercent.html b/docs/reference/rowPercent.html index d9cc307c4..1e7def708 100644 --- a/docs/reference/rowPercent.html +++ b/docs/reference/rowPercent.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 diff --git a/docs/reference/subsetHelper.html b/docs/reference/subsetHelper.html index 2a598e6fa..0e12af20d 100644 --- a/docs/reference/subsetHelper.html +++ b/docs/reference/subsetHelper.html @@ -17,7 +17,7 @@ dsBaseClient - 7.0.0-9000 + 7.0.0.9000 From d2aff0195fa0b1e186cb20e15c2752beee3273e4 Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Sun, 23 Nov 2025 12:17:41 +0000 Subject: [PATCH 10/11] Fixed test of 'ds.listClientsideFunctions' --- tests/testthat/test-smk-ds.listClientsideFunctions.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testthat/test-smk-ds.listClientsideFunctions.R b/tests/testthat/test-smk-ds.listClientsideFunctions.R index befb73246..4e5f67914 100644 --- a/tests/testthat/test-smk-ds.listClientsideFunctions.R +++ b/tests/testthat/test-smk-ds.listClientsideFunctions.R @@ -141,7 +141,7 @@ test_that("check results", { "ds.vectorCalc" ) - expect_output(res <- ds.listClientsideFunctions(), "*") + res <- ds.listClientsideFunctions() for (func.name in output) { expect_true(func.name %in% res, info = func.name) From 5cfa7c011bbf1ffac06cdeac29c28a00678a5d2d Mon Sep 17 00:00:00 2001 From: Stuart Wheater Date: Sun, 23 Nov 2025 12:52:06 +0000 Subject: [PATCH 11/11] Added 'libudunits2-dev' --- armadillo_azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armadillo_azure-pipelines.yml b/armadillo_azure-pipelines.yml index b7f98439e..4ff1f497d 100644 --- a/armadillo_azure-pipelines.yml +++ b/armadillo_azure-pipelines.yml @@ -132,7 +132,7 @@ jobs: sudo apt-get upgrade -y sudo apt-get install -qq libxml2-dev libcurl4-openssl-dev libssl-dev libgsl-dev libgit2-dev r-base -y - sudo apt-get install -qq libharfbuzz-dev libfribidi-dev libmagick++-dev -y + sudo apt-get install -qq libharfbuzz-dev libfribidi-dev libmagick++-dev libudunits2-dev -y sudo R -q -e "install.packages(c('devtools','covr'), dependencies=TRUE, repos='https://cloud.r-project.org')" sudo R -q -e "install.packages(c('fields','meta','metafor','ggplot2','gridExtra','data.table'), dependencies=TRUE, repos='https://cloud.r-project.org')" sudo R -q -e "install.packages(c('DSI','DSOpal','DSLite'), dependencies=TRUE, repos='https://cloud.r-project.org')"