[R] Integrate functions with loops

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Sep 16 17:37:47 CEST 2005


Try to give a vector result with one element for each of element of x, 
e.g.

 	integrandtotest <- function(x) colSums(outer(t, x, "^"))

works, although in fact this integration can be done analytically (it is a 
sum of exponentials).

On Fri, 16 Sep 2005, A.Brennan wrote:

> Hi
>
> i am having a problem with the 'integrate' function
> the function i want to integrate has the form
> sum(vector^x)
>
> i have defined the function with a for loop first -
> integrandtotest <- function(x)
>    {a<-rep(0,len=2)
>    for (i in 1:2)
>        {a[i]<-t[i]^x}
>        sum(a)
>        }
>
> the results gives errors
> ###########
> Error in integrate(integrandtotest, lower = 0.1, upper = 2,
> subdivisions = 10000) :
>        evaluation of function gave a result of wrong length
> In addition: Warning messages:
> 1: number of items to replace is not a multiple of replacement
> length
> 2: number of items to replace is not a multiple of replacement
> length
> #######
>
> I then tried a vector multiplication instead of the for loop
>
>
> integrandtotest3 <- function(x)
>    {b<-c(t[1],t[2])
>    a<-b^x
>    sum(a)
>        }
>
> which gave errors
> ########
> Error in integrate(integrandtotest3, lower = 0.1, upper = 2,
> subdivisions = 10000) :
>        evaluation of function gave a result of wrong length
> In addition: Warning message:
> longer object length
>        is not a multiple of shorter object length in: b^x
> ##########
>
> but when i write the functio out long-hand as follows:
>
> integrandtotest2 <- function(x)
>    {t[1]^x+t[2]^x}
>
> the integrate function works perfectly.......
> ###
>> integralresulttotest2<-integrate(integrandtotest2, lower=0.1,
> upper=2, subdivisions=10000)
>> integralresulttotest2
> 1.642369 with absolute error < 1.8e-14
> ###
>
> Unfortunatley my real life example has the vector a with length at
> least 100.
>
> Is the any way round these errors?
>
> Many thanks for answers to my first question to this list
> yours
> Alan
>
>
>
> Alan Brennan
> Director of Health Economics and Decision Science
> http://www.shef.ac.uk/scharr/sections/heds
> ScHARR
> School of Health and Related Research
> University of Sheffield
> Regent Ct
> 30 Regent St
> Sheffield S1 4DA
> Tel:+44 (0)114 2220684
> Fax:+44 (0)114 2724095
> e-mail:a.brennan at sheffield.ac.uk
>
> ______________________________________________
> 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
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list