Earl F. Glynn
2006-Aug-14 22:44 UTC
[R] Help with workaround for: Function '`[`' is not in the derivatives table
# This works fine:> a <- 1> b <- 2> c <- 3> E <- expression(a * exp(b*X) + c)> X <- c(0.5, 1.0, 2.0)> eval(E)[1] 5.718282 10.389056 57.598150> D(E, "b")a * (exp(b * X) * X)> eval(D(E, "b"))[1] 1.359141 7.389056 109.196300 # But if (a,b,c) are replaced with (A[1], A[2], A[3]), how can I get a derivative using "D"?> A <- c(1, 2, 3)> E <- expression(A[1] * exp(A[2]*X) + A[3])> X <- c(0.5, 1.0, 2.0)> eval(E)[1] 5.718282 10.389056 57.598150 # Why doesn't this work? Any workarounds?> D(E, "A[2]")Error in D(E, "A[2]") : Function '`[`' is not in the derivatives table If I want to have a long vector of coefficients, A, (perhaps dozens) how can I use "D" to compute partial derivatives? Thanks for any help with this. efg Earl F. Glynn Scientific Programmer Stowers Institute for Medical Research
Berton Gunter
2006-Aug-14 23:10 UTC
[R] Help with workaround for: Function '`[`' is not in thederivatives table
I think this is the sort of problem which is most elegantly handled by computing on the language. Here is an INelegant solution:> A <- c(1, 2, 3)> for(i in 1:3)assign(paste('A',i,sep=''),A[i])> E <- expression(A1 * exp(A2*X) + A3) ## could also use substitute() here,I think ## instead of explicitly assigning the coefficients> X <- c(0.5, 1.0, 2.0)> eval(E)[1] 5.718282 10.389056 57.598150> D(E, "A2")A1 * (exp(A2 * X) * X) Bert Gunter Genentech> -----Original Message----- > From: r-help-bounces at stat.math.ethz.ch > [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Earl F. Glynn > Sent: Monday, August 14, 2006 3:44 PM > To: r-help at stat.math.ethz.ch > Subject: [R] Help with workaround for: Function '`[`' is not > in thederivatives table > > # This works fine: > > a <- 1 > > > b <- 2 > > > c <- 3 > > > > > E <- expression(a * exp(b*X) + c) > > > > > X <- c(0.5, 1.0, 2.0) > > > > > eval(E) > > [1] 5.718282 10.389056 57.598150 > > > > > D(E, "b") > > a * (exp(b * X) * X) > > > eval(D(E, "b")) > > [1] 1.359141 7.389056 109.196300 > > > > # But if (a,b,c) are replaced with (A[1], A[2], A[3]), how > can I get a > derivative using "D"? > > > > > A <- c(1, 2, 3) > > > E <- expression(A[1] * exp(A[2]*X) + A[3]) > > > X <- c(0.5, 1.0, 2.0) > > > eval(E) > > [1] 5.718282 10.389056 57.598150 > > > > # Why doesn't this work? Any workarounds? > > > D(E, "A[2]") > > Error in D(E, "A[2]") : Function '`[`' is not in the derivatives table > > > > If I want to have a long vector of coefficients, A, (perhaps > dozens) how can > I use "D" to compute partial derivatives? > > > > Thanks for any help with this. > > > > efg > > > > Earl F. Glynn > > Scientific Programmer > > Stowers Institute for Medical Research > > ______________________________________________ > R-help at stat.math.ethz.ch 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. >
Seemingly Similar Threads
- Help with workaround for: Function '`[`' is not in thederivatives table
- Read Windows-like .INI files into R data structure?
- Don't understand write.csv default: Why is column name for column of row names blank?
- RODBC and Excel: Wrong Data Type Assumed on Import
- Anything like dir.choose (similar to file.choose) in R?