[R] apply

Berton Gunter gunter.berton at gene.com
Fri Jan 13 22:24:28 CET 2006


You are not calling apply() properly. Please read relevant reference
material carefully. You might also wish to pick up one of the several good
books on R (check CRAN website) -- I like V&R's S PROGRAMMING.

I did not go through your example in detail, but your apply() call should be
of the form

apply(d,2,function(x)optim(x,...))

You may or may not get into scoping problems with the opt1 argument and have
to pass it in explicitly -- I can't remember how things work with optim. 

-- Bert Gunter
Genentech Non-Clinical Statistics
South San Francisco, CA
 
"The business of the statistician is to catalyze the scientific learning
process."  - George E. P. Box
 
 

> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch 
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of 
> Guenther, Cameron
> Sent: Friday, January 13, 2006 11:03 AM
> To: R-help at r-project.org
> Subject: [R] apply
> 
> Hello,
> I have a dataset d which is
>  >d
>          pop     catch 
> 1   66462.01 10807.757 
> 2   87486.73 46257.885 
> 3   57211.64  9345.058 
> 4   71321.62  4892.868 
> 5  100024.89 27334.248 
> 6  104504.91 48535.092 
> 7   95295.51 39348.195 
> 8   93737.35 34343.489 
> 9   89375.05 28750.743 
> 10  95312.65 30755.064 
> 11 100888.17 55404.370 
> 12  84790.23 37751.074 
> 13  81129.82 29277.443 
> 14  69797.09 21500.398 
> 15  61690.34 18199.664 
> 16  60671.08 19349.051 
> 17  62852.57 16300.982 
> 18  90646.32 34793.148 
> 
> And a function opt1:
> 
> opt1 <- function (x) {
>   Z <- x + M
>   c.hat <- (x/Z)*pop*(1-exp(-Z))
>   y <- (catch - c.hat)^2
>   return(y)
>   }
> 
> And define M = 0.25 
> For each row I want to return a value F that is a minimization of the
> opt1 function
> 
> I have tried many variations of:
> d$F<-apply(d,2,optim(0.3,opt1,method="BFGS")
> and even:
> For (I in 1:length(pop))apply(d,2,optim(0.3,opt1,method="BFGS"))
> 
> Every time I get the same error message
> 
> Error in optim(0.3, opt1, method = "BFGS") : 
>         objective function in optim evaluates to length 18 not 1
> 
> So the apply function is returning 18 values of F which I want but the
> function only wants to return 1 value.
> 
> Any Suggestions.
> Thanks,
> Cam
> 
> ______________________________________________
> 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
>




More information about the R-help mailing list