I missed a couple line of codes in the previous e-mail. Here is whole code again:
load <- matrix(c(3,0,1,4,1,3),nrow=3,ncol=2,byrow=TRUE) l <- matrix(nrow=nrow(load),ncol=ncol(load)) for(i in 1:nrow(load)) { for(j in 1:ncol(load)) { l[i,j]=paste("l",i,j,sep="")}} for(i in 1:nrow(load)){ for(j in 1:ncol(load)){ assign(paste("l",i,j,sep=""),load[i,j]) }} numericDeriv(quote(l11*l21+l12*l22), c(t(l),recursive=TRUE)) a <- paste( paste(l[1,1],l[2,1],sep="*"), paste(l[1,2],l[1,2],sep="*"), sep="+" ) numericDeriv(???a???, c(t(l),recursive=TRUE)) Thanks On Fri, May 18, 2012 at 1:25 PM, Cengiz ZopluoÄlu <cen....@gmail.com> wrote: > Hi, > > I am stuck on something for a couple days, I am almost about to give up. > This looks simple, but I can't figure out. I hope I can get some help here. > > I am trying to do some symbolic and numerical derivations. Let me explain > the problem. Let's say, I have a matrix as follows: > > > load <- matrix(c(3,0,1,4,1,3),nrow=3,ncol=2,byrow=TRUE) > > > > load > [,1] [,2] > [1,] 3 0 > [2,] 1 4 > [3,] 1 3 > > I will create objects for each element of the matrix, and assign the > matrix elements to these objects. These objects will be also an element of > another matrix. > > l <- matrix(nrow=nrow(load),ncol=ncol(load)) > for(i in 1:nrow(load)) { > for(j in 1:ncol(load)) { l[i,j]=paste("l",i,j,sep="")}} > > > l > [,1] [,2] > [1,] "l11" "l12" > [2,] "l21" "l22" > [3,] "l31" "l32" > > > l11 > [1] 3 > > l12 > [1] 0 > > l21 > [1] 1 > > l22 > [1] 4 > > l31 > [1] 1 > > l32 > [1] 3 > > Let's say, I need to take the derivative of (l11*l21+l12*l22) with > respect to l11,l12,l21,l22,l31,l32. > > > numericDeriv(quote(l11*l21+l12*l22), c(t(l),recursive=TRUE)) > [1] 3 > attr(,"gradient") > [,1] [,2] [,3] [,4] [,5] [,6] > [1,] 1 4 3 0 0 0 > > Everything is fine up to this point. I need what I have. But, I don't want > to manipulate the elements in "quote()" manually within the numericDeriv > function. For instance, I want to call these elements from the matrix "l" > as below: > > > a <- paste( > + paste(l[1,1],l[2,1],sep="*"), > + paste(l[1,2],l[1,2],sep="*"), > + sep="+" > + ) > > a > [1] "l11*l21+l12*l12" > > Now, "a" is a character. Do you have any idea about how to use the > character value "l11*l21+l12*l12" assigned to object "a" within the > numericDeriv function. So, I can get the same result as above without > manipulating the expression in quote() manually. > > Thanks > > > > > -- > > Cengiz Zopluoglu > > > > > -- Cengiz Zopluoglu [[alternative HTML version deleted]]
______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.