[R] can't get names from vector in nlm calls

Jeff D. Hamann jeff_hamann at hamanndonald.com
Tue Sep 30 05:01:42 CEST 2003


I've been trying to figure out how to get the names of the parameter vector
variables when inside the function that nlm calls to return the objective
function value:

knls <- function( theta, eqns, data, fitmethod="OLS", instr=NULL, S=NULL )
  {

    ##     print( names( theta ) )              # returns NULL
    ## get the values of the parameters
    for( i in 1:length( theta ) )
      {
        val <- theta[i]
        storage.mode( val ) <-  "double"
        assign( names( theta )[i], val )          # gags here cause I can't
get the names...
      }

    ## resids = eval( lhs ) - eval( rhs )
    for( i in length( eqns ) )
      {
        lhs[[i]] <- eval( formula( eqns[[i]] )[2] )
        rhs[[i]] <- eval( formula( eqns[[i]] )[3] )
        residi[[i]] <- lhs[[i]] - rhs[[i]]
        r <- rbind( r, as.matrix( residi[[i]] ) )
      }

    ## blah, blah, blah....

    knls <- obj
}


print( "calling nlstest" )
demand2 <- q ~ d0 + d1 * p + d2 * d
supply2 <- q ~ s0 + s1 * p + s2 * f + s3 * a
system2 <- list( demand2, supply2 )
sv2 <- c(d0=3,d2=4,d1=4.234,s0=-2.123,s2=2.123,s3=4.234,s1=0.234)

### call the nlm function to get the estimates...
estnew <- nlm( knls, sv2, hessian=TRUE, print.level=1, eqns=system2,
data=kmenta, fitmethod="OLS" )


My question is why can't I simply call names on the vector (sv2) that is
passed into the nlm function to get the parameters?

Thanks,
Jeff.



---
Jeff D. Hamann
Hamann, Donald and Associates, Inc.
PO Box 1421
Corvallis, Oregon USA 97339-1421
(office) 541-754-1428
(cell) 541-740-5988
jeff_hamann at hamanndonald.com
www.hamanndonald.com




More information about the R-help mailing list