Hi Marianne,

You have to be very careful with subsetting when doing something like that -
that's where you went wrong with your original construct. This version works:
> v<-c(3,6,8,1,1,3,9,5,6,3)
> a <- numeric(length(v)-1)
> for (i in 2:length(v)) {a[i-1] <- v[i-1] + v[i]}
> a
[1]  9 14  9  2  4 12 14 11  9


But here's a more elegant way:
> v[1:(length(v)-1)] + v[2:length(v)]
[1]  9 14  9  2  4 12 14 11  9

and I'm sure there are even nicer solutions.

Sarah

On Mon, Dec 6, 2010 at 12:13 PM, Marianne Stephan
<mariannestep...@hotmail.com> wrote:
>
> Hello,
>
>
> How can I apply a function on a vector that refers to actual (n) and previous 
> elements in the vector (e.g. n-1)?
>
>
> For example:
> I would like to calculate the sum of (n-1) + n for each element of a vector 
> and get a vector as a result.
>
>
> Besides others I tried this:
>
>
> v<-c(3,6,8,1,1,3,9,5,6,3)
> for (i in 1:NROW(v)){a[i]<-a[i-1]+a[i]}
>
>
> I would like to get this result:
> 9,14,9,2,4,12,14,11,9
>
>
-- 
Sarah Goslee
http://www.functionaldiversity.org

______________________________________________
R-help@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.

Reply via email to