# NOT RUN {
# Start an R process and make it a server
library(svSocket)
startSocketServer()
# Start a second R process and run this code in it (the R client):
library(svSocket)
# Connect with the R socket server
con <- socketConnection(host = "localhost", port = 8888, blocking = FALSE)
L <- 10:20
L
evalServer(con, L) # L is not an the server, hence the error
evalServer(con, L, L) # Send it to the server
evalServer(con, L) # Now it is there
evalServer(con, L, L + 2)
L
evalServer(con, L)
# More examples
evalServer(con, "x <- 42") # Set x
evalServer(con, "y <- 10") # Set y
evalServer(con, x + y) # Quotes not needed
evalServer(con, "x + y") # but you can put quotes if you like
evalServer(con, x) # Same as get x
evalServer(con, "x + Y") # Return server side-error to the client
evalServer(con, x) # Keep working after an error
evalServer(con, "x <- 'a'") # Embedded quotes are OK
# Examples of sending data
evalServer(con, X, -42) # Alternative way to assign to X
evalServer(con, Y, 1:10)
evalServer(con, X + Y)
X # Generates an error, X is not here in the client, only on the server
evalServer(con, X)
evalServer(con, "Z <- X + 3") # Send an assignment to execute remotely
evalServer(con, X + Z)
evalServer(con, "Z <- X + 1:1000; NULL") # Same but do not return Z
evalServer(con, length(Z))
Z <- evalServer(con, Z) # Bring it back to client
Z
# Close connection with the R socket server
close(con)
# Now, switch back to the R server process and check
# that the created variables are there
L
x
y
X
Y
Z
# Stop the socket server
stopSocketServer()
# }
Run the code above in your browser using DataLab