How to create a new function

  • Pull dsBase package from github to your machine - this is all the server side datashield functions for base package
  • Pull the dsBaseClient from github to your machine - this contains all the client functions
  • Write R script for server function named in the conventional way xxxDS.R
  • Write an R script for the client function named in the conventional way ds.xxxxx.R
  • Place the server function script into the correct folder pulled from github e.g. dsBase/R/ on your own machine
  • Place the client function script into the correct folder pulled from github e.g. dsBaseClient/R/ on your own machine
  • Put the header at the top of the client R script (ds.xxxx.R script)

    Example Header block
    #' 
    #' @title [insert something] 
    #' @description [insert something]
    #' @export 
    #'
    Example 2
    #' 
    #' @title creates random numbers 
    #' @description This function is similar to R function \code{rnorm}.
    #' @export
    #'
  • On each Opal server log into the web interface and click on Administration > DataSHIELD and select either ASSIGN or AGGREGATE (depends on your function and what it does!)
    Click +Method
    Add a name of server side function "xxxxx.DS"
    Select R script
    Paste the server function code from your xxxxx.DS.R script into the empty box
    Click save 
  • Reload the new client library from your local machine. In R:

    library(devtools)
    devtools::load_all("filepath to dsBaseClient you have pulled from github on your machine")
  • Test the new function:

    #load libraries
    library(opal)
    library(dsBaseClient)
    library(dsStatsClient)
    library(dsGraphicsClient)
    library(dsModellingClient)
     
    #log into to the test opals
    data(logindata)
    opals <- datashield.login(logins=logindata,assign=TRUE)
     
    #run the function to test it
    ds.rNorm1(samp.size=25,mean=0,sd=1,newobj="newObject",datasources=NULL)