Spencer Graves ######################## Jeff D. Hamann wrote:
I started looking at the R and C code to examine where to change this and found the
SEXP do_nlm(SEXP call, SEXP op, SEXP args, SEXP rho)
function, but I'm not really sure how to modifiy yet to preserve the variable names, if there are variable names when it gets to that function. Plus I'd have to install lots of new and potentially conflicting tools on my win32 machine and then debug to the code... so i think I'm going to have to find another solution to my problem, which is a drag as the solution I originally thought of (get the names from p vector) would be the best one so far.
Jeff.
----- Original Message ----- From: "Spencer Graves" <[EMAIL PROTECTED]>
To: "Spencer Graves" <[EMAIL PROTECTED]>
Cc: "Jeff D. Hamann" <[EMAIL PROTECTED]>
Sent: Tuesday, September 30, 2003 5:44 AM
Subject: Re: [R] can't get names from vector in nlm calls
preserveI've written functions to ask first if the input vector had names. If it didn't, I checked the length and then assigned the names I expected it to have. Then I checked the names. That worked for me.
I believe it would be possible to get nlm/optim to preserve the names, as you ask. However, it would not be easy, and it might slow down the code. To check this, I typed "nlm" and "optim" at a command prompt and read the code. When I did that, I found that most of the work in both is done via a call to ".Internal", which passes control to a compiled function. R is open source, which means you could get the source code and modify it to do what you want. However, that would be difficult, at least for me.
hope this helps. spencer graves
Jeff D. Hamann wrote:
>optim give the same results. is it possible to "get" nlm/optim to
>the names?is
>
>
>----- Original Message -----
>From: "Spencer Graves" <[EMAIL PROTECTED]>
>To: "Jeff D. Hamann" <[EMAIL PROTECTED]>
>Sent: Monday, September 29, 2003 8:18 PM
>Subject: Re: [R] can't get names from vector in nlm calls
>
>
>
>
>> I have not used nlm, but it may not preserve the names of the
>>starting values in "p".
>>
>> hope this helps. spencer graves
>>
>>Jeff D. Hamann wrote:
>>
>>
>>
>>>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
>>>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
>>>[EMAIL PROTECTED]
>>>www.hamanndonald.com
>>>
>>>______________________________________________
>>>[EMAIL PROTECTED] mailing list
>>>https://www.stat.math.ethz.ch/mailman/listinfo/r-help
______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help
