When I try to load data.table package in a remote session on a MS R Server, I get an error:
REMOTE> library(data.table)
Error: package or namespace load failed for 'data.table'
Using the namespace directly I get more colour:
REMOTE> data.table::data.table(x = 1)
Error: .onLoad failed in loadNamespace() for 'data.table', details:
call: assign("cbind.data.frame", tt, envir = asNamespace("base"), inherits = FALSE)
error: cannot change value of locked binding for 'cbind.data.frame'
Any advice on how to resolve this?
Here some more information about the way R server is set up and how I install packages:
I create a remote session on the machine B running these commands:
library(mrsdeploy)
remoteLogin("http://machineA:12800",
username = "admin",
password = "xyz",
session = TRUE,
commandline = TRUE)
In the remote session I try to load the data.table package as described above at the beginning of my question which fails. Running .libPath() in the remote session gives:
REMOTE> .libPaths()
[1] "C:/RglobalPkgs"
[2] "C:/Program Files/Microsoft/R Server/R_SERVER/library"
I emailed the dev team about this. Response below:
We're aware of the issue and will push a fix in the next release. A workaround is to go to C:\Program Files\Microsoft\R Server\R_SERVER\deployr\RServe\RScripts\source.R on the machine with the compute node and comment out
# unlockBinding("unlockBinding",b) # assign("unlockBinding", deployr.unlock, envir=b) # lockBinding("unlockBinding", b)
Then go to services and restart the RServe9.0.0 service.