Example
The following example shows how to execute R statements and exchange data with the R workspace.
model "r example" uses "r" declarations CITIES = {"LONDON", "PARIS", "ROME"} ZONES = 1..4 mosarray, backarr, backarrio: array(ZONES, CITIES) of integer backnum: real end-declarations setparam("Rverbose",true) ! Enable showing R error messages ! Reval evaluates arbitrary R statements Reval("t<-Sys.time();now<-format(t, '%H:%M')") ! Rprint also prints the result (via the R print function) Rprint("paste('Hello from R at',now)") ! Assign some Mosel scalars to R vars and show results Rset("a_num", 1.2) Reval("str(a_num)") Rset("a_chr", "word") Reval("str(a_chr)") ! The lvalue can be any R valid lvalue, e.g. the dim attribute Rset("a_vec", 1..6) ! a_vec is an R vector Rset("dim(a_vec)", [2,3]) ! change its dimensions writeln("a_vec") Rprint("a_vec") ! now it is a 2x3 matrix ! Assign a Mosel array to an R variable forall(i in ZONES, c in CITIES) mosarray(i,c):=i*10+getsize(c) Rset("arr", mos_array) ! The R vector keeps index names writeln("arr") Rprint("arr") ! Retrieve R variables writeln("a_num is ", Rgetreal("a_num")) writeln("a_chr is ", Rgetstr("a_chr")) Rgetarr("arr", backarr) writeln("arr is ", backarr) ! Data can also be exchanged via the I/O driver newnumber:=1.3 mosarray(1,"LONDON"):=1 ! Send data to R initializations to "r.rws:" newnumber as "a_num" mosarray as "arr" end-initializations ! Get data back from R initializations from "r.rws:" backnum as "a_num" backarrio as "arr" end-initializations writeln("backnum is ", backnum) writeln("backarrio is ", backarrio) end-model