Version 5.1.0 is a minor update to v5.0.0 with minor new functionality added and some refactoring of existing code to make it more consistent.
We have modified the ds.asNumeric and the ds.asInteger functions, to first convert an input object to a character and then to a numeric or integer. We found that in native R the function “as.numeric” (and similarly the function “as integer”) when is used to convert a variable of class factor to a variable of class numeric (or integer), it returns the underlying level codes of the factor instead of converting the actual values to numbers. For example it converts the factor vector (0 1 1 2 1 0 1 0 2 2 2 1) with Levels: 0 1 2, to the numeric vector (1 2 2 3 2 1 2 1 3 3 3 2). This behaviour occurs also in DataSHIELD, version <=5.0.0, through the ds.asNumeric or the ds.asInteger functions. The updated versions of ds.asNumeric and ds.asInteger functions in version 5.1.0, first convert an input object to a character and then to a numeric or integer.
Updated versions of the ds.glm and ds.glmSLMA functions to allow the non-intercept indicator “0” to be part of the formula argument.
ds.message: The implementation of the messageDS has been modified to ensure that it isn’t possible to unintentionally disclose information.
Extended tests coverage: additional tests have been implemented to increase the test coverage.
Added function ds.dataFrameFill. The purpose of ds.dataFrameFill is to add extra columns with missing values in a dataframe one for each variable is not included in the dataframe but is included in the relevant dataframe of another datasource.
Updated version of seq and unList support. The implementations of, at client-side, ds.seq and ds.unList, and at the server-side seqDS and unListDS have been reworked.
The use of the disclosure control parameter datashield.privacyLevel is being phased out. Use of datashield.privacyLevel has been replaced by use of default.nfilter.subset and default.nfilter.tab.
The default value of the ‘newobj’ argument, if unspecified, has been changed for the following functions:
For the above functions the new default for ‘newobj’ is now the function’s base name, all lower case, followed by ‘_newobj’. For example the function ‘ds.dataFrameSubset' the value will be 'dataframesubset_newobj’.
9. We removed ds.gee in v5.1.0.