[R] From vector to a step function

jim holtman jholtman at gmail.com
Mon Jan 10 18:44:34 CET 2011


try this:

> f.main <- function(vec){
+     breaks <- seq(-3, by = 1, length = length(vec) + 1L)
+     function(x){
+         indx <- findInterval(x, breaks)
+         vec[indx]
+     }
+ }
> f1 <- f.main(c(3,4,5,1,2,3,4,5))
> f2 <- f.main(c(5,6,2,4,7,3,2,5))
> f3 <- f.main(c(1,2,4,7,3,1,3,5))
>
> f1(c(-2.5,-2,-.5,0,.5,1.5,2.5))
[1] 3 4 5 1 1 2 3
> f2(c(-2.5,-2,-.5,0,.5,1.5,2.5))
[1] 5 6 2 4 4 7 3
> f3(c(-2.5,-2,-.5,0,.5,1.5,2.5))
[1] 1 2 4 7 7 3 1
>


On Mon, Jan 10, 2011 at 11:42 AM, Alaios <alaios at yahoo.com> wrote:
> Greetings R members.
>
> I have a few vectors that denote the 'steps' of different step functions
> v1=c(3,4,5,1,2,3,4,5)
> v2=c(5,6,2,4,7,3,2,5)
> v3=c(1,2,4,7,3,1,3,5)
>
> Here v1,v2,v3 are considered as the steps for the f1,f2,f3 step functions.
>
> For example f1 looks like that (step size is always same and fixed)
>
> f1= 3 (x>=-3,x<-2)
> f1= 4 (x>=-2,x<-1)
> f1= 5 (x>=-1,x<0)
> f1= 1 (x>=0, x<1)
> and so on.
>
> What I only have are these vectors that are interpreted as functions (as shown above, x (step is 1 here). I would like to ask your help of how I can create some function that reads one of the vector v1,v2,v3.... and returns results that are acceptable by integrate() function.
>
> Usually integrate wants a pre-defined function like
> myfunc(x)<-function{ x^2 }
> but this is not the case here.
>
> Could you please give me some hints how I can proceed?
>
> I would like to thank u in advance for your help
>
> Regards
> Alex
>
> ______________________________________________
> R-help at r-project.org 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.
>



-- 
Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?



More information about the R-help mailing list