Hello World Agent
This - obviously - is the most basic example. We are calling a function in R and receive its return value.
Prepare R code to be called remotely
Let's pretend we wanted to remotely call this very simple R code:
greet <- function(whom) {
paste("Hello,", whom)
}Then all we have to do is to load the vrpc library and add a single line:
app.R
library("vrpc")
greet <- function(whom) {
paste("Hello,", whom)
}
start_vrpc_agent(domain = "public.vrpc")When you run this code, using e.g.
Rscript app.Ra VRPC agent will be created which connects to the vrpc.io cloud and keeps listening for incoming instructions under the public and free domain "public.vrpc".
Use a Node.js client to call the R code
Having started the agent, we can now call the code from any remote location using any VRPC-supported programming language.
Let's see how that would work with Javascript (Node.js):
index.js
const { VrpcRemote } = require('vrpc')
if (process.argv.length < 3) {
console.log('Usage: node index.js <agentName>')
process.exit(1)
}
// retrieve agent name from command line
const agent = process.argv[2]
async function main () {
// create and connect VRPC client
const client = new VrpcRemote({ agent, domain: 'public.vrpc' })
await client.connect()
// call the R function as static function of the Session class
const ret = await client.callStatic({
className: 'Session',
functionName: 'greet',
args: ['world!']
})
// print the result
console.log(ret) // Hello, world!
}
main()IMPORTANT
Any R code that is remotely available will be encapsulated within a Session class. You may create (remote-) instances of that class if you want need stateful interaction with the R code. Otherwise, you can simply call the functions statically.
To see how it works, you need to first install the required Node.js packages:
npm installAnd then execute:
node index.js <yourAgent>using the correct agent name as displayed after having started the R code.
Last updated