[R] R.matlab questions
    Spencer Graves 
    spencer.graves at pdf.com
       
    Thu Jun 28 17:39:26 CEST 2007
    
    
  
Hello:
	  Two questions about R.matlab:
	  1.  How to break a hung R-Matlab connection?
	  2.  How to execute R.matlab commands from within a function?
	
BREAKING AN R-Matlab CONNECTION
	  Sometimes an attempted R.matlab command locks up my computer.  The 
standard R break process interrupts the R command.  However, when I do 
that, the command to Matlab is still pending, and I don't know an easy 
way to interrupt that.  A simple, self-contained example appears below.
	  The easiest way I've found so far to interrupt Matlab is to quit R. 
This will finally release Matlab.
CALLING R.matlab FUNCTIONS FROM WITHIN A FUNCTION
	  An R.matlab function call that works as a direct R command hangs for 
me when executed within an R function.  A simple, self-contained example 
appears below.
How can I work around this?
	  Thanks,
	  Spencer Graves
Using Matlab 7.3.0 (R2006b) under Windows XP Pro.
> sessionInfo()
R version 2.5.0 (2007-04-23)
i386-pc-mingw32
locale:
LC_COLLATE=English_United States.1252;LC_CTYPE=English_United
States.1252;LC_MONETARY=English_United
States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252
attached base packages:
[1] "splines"   "stats"     "graphics"  "grDevices" "utils"     "datasets"
[7] "methods"   "base"
other attached packages:
R.matlab     R.oo      fda      zoo
  "1.1.3"  "1.2.7"  "1.2.1"  "1.3-1"
###################
#EXAMPLE:  CALLING R.matlab FROM WITHIN A FUCTION?
# 1.  library(R.matlab)
library(R.matlab)
# 2.  Create a Matlab client object to support communications
(matlab <- Matlab())
#     Optionally set setVerbose(..., -2) to get max info
setVerbose(matlab, -2)
# 3.  Start Matlab
# 4.  Ask Matlab to become a slave
#Matlab>> MatlabServer
# 5.  Open the connection from R to MatlabServer
(isOpenMatlab <- open(matlab))
# NOTE:  If Matlab is not frozen:
#R> close(matlab)
# returns local control to Matlab.
# Control of Matlab can be returned to R at any time
# by repeating steps 4 & 5.
# 6.  matlab.compute.a
compute <- evaluate(matlab, "a = 1+2")
(a0 <- getVariable(matlab, "a"))
# The above works fine for me.
# 7.  R.matlab.compute.a function
R.matlab.compute.a <- function(text="a=1+2", matlabClient=matlab){
# text = a Matlab expression that stores 'a'
   ev0 <- evaluate(matlabClient, text)
   getVariable(matlabClient, "a")
}
# The following locks up both R and Matlab for me:
R.matlab.compute.a()
    
    
More information about the R-help
mailing list