Jennifer Young
2009-Oct-14 13:31 UTC
[R] R version of MATLAB symbolic toolbox (variable substitution)
I'm translating some MATLAB code into R and have not found a simple equivalent of the function R = subs(S,old,new). I have, for example, a matrix such as this mx<- function(){ matrix( c(0, f1, f2, s1, 0, 0, 0, s2, 0), 3,3, byrow=T) } and a matrix of data dat<-matrix(c(1,2,3,4,2,3,4,5),2,4, byrow=T, dimnames<-list(NULL, c("f1","f2","s1","s2"))) I want to do two things with this matrix that seem to require different formats. 1. evaluate this matrix many times using data from a matrix (for stochastic simulation). In the function form above, I can use attach(as.data.frame(dat)) and the correct variables are fed to mx, but I'd rather avoid using attach if possible. 2. I also want to manipulate the matrix (i.e., take the derivative of each element with respect to a certain parameter). If I use mx<-c(0, expression(f1), expression(f2)) etc then I can use deriv(mx[2], c("f1","f2")) etc to take the derivatives. BUT, I can't find how to then evaluate this version (in one line) for a row of data in dat. f1<-2 f2<-4 eval(mx) gives the scalar 4 (the last element of mx) rather than the vector. I haven't come up with a form for mx that achieves both goals, while the symbolic toolbox can do each in one line of code. Does a clone package exist? I didn't see anything useful in R's Matlab package. In lieu of such a package I'll settle for being able to evaluate a vector of expressions. Probably I'm missing simple syntax here. Thanks in advance, Jen Young