Hi all, My problem is as follows: I want to run a loop which calculates two values and stores them in vectors r and rv, respectively. They're calculated from some vector x with length a multiple of 7. x <- c(1:2058) I need to difference the values but it would be incorrect to difference it all in x, it has to be broken up first. I've tried the following: r <- c(1:294)*0 rv <- c(1:294)*0 #RUN A LOOP WHERE YOU INPUT THE lx[(i-1)*7:i*7] INTO Z for (i in 1:294){ #CREATE A NEW VECTOR OF LENGTH 7 z <- NULL length(z)=7 dz <- NULL dz2 <- NULL #STORE THE VALUES IN z z <- lx[1+(i-1)*7:(i)*7] #THEN DIFFERENCE THOSE #THIS IS r_t,i,m dz=diff(z) #SUM THIS UP AND STORE IT IN r, THIS IS r_t r[i] <- sum(dz) #SUM UP THE SQUARES AND STORE IT IN rv, THIS IS RV_t dz2 <- dz^2 rv[i] <- sum(dz2) #END THE LOOP } However, the window seems to expand for some reason, so z ends up being a much longer vector than it should be and full of NAs. Any help or advice is much appreciated. Aodh?n -- View this message in context: http://r.789695.n4.nabble.com/Breaking-up-a-vector-tp4631329.html Sent from the R help mailing list archive at Nabble.com.
Hello, Tip: see the difference between the following two. for(i in 1:7) cat(i, ":", (i-1)*7:(i)*7, "\n") for(i in 1:7) cat(i, ":", ((i-1)*7):(i*7), "\n") (operator ':' has high precedence...) Hope this helps, Rui Barradas AOLeary wrote> > Hi all, > > My problem is as follows: > > I want to run a loop which calculates two values and stores them in > vectors r and rv, respectively. > They're calculated from some vector x with length a multiple of 7. > > x <- c(1:2058) > > I need to difference the values but it would be incorrect to difference it > all in x, it has to be broken up first. I've tried the following: > > r <- c(1:294)*0 > rv <- c(1:294)*0 > > #RUN A LOOP WHERE YOU INPUT THE lx[(i-1)*7:i*7] INTO Z > for (i in 1:294){ > #CREATE A NEW VECTOR OF LENGTH 7 > z <- NULL > length(z)=7 > dz <- NULL > dz2 <- NULL > > #STORE THE VALUES IN z > z <- lx[1+(i-1)*7:(i)*7] > > #THEN DIFFERENCE THOSE > #THIS IS r_t,i,m > dz=diff(z) > > #SUM THIS UP AND STORE IT IN r, THIS IS r_t > r[i] <- sum(dz) > > #SUM UP THE SQUARES AND STORE IT IN rv, THIS IS RV_t > dz2 <- dz^2 > rv[i] <- sum(dz2) > #END THE LOOP > } > > > However, the window seems to expand for some reason, so z ends up being a > much longer vector than it should be and full of NAs. > > > Any help or advice is much appreciated. > > Aodh?n >-- View this message in context: http://r.789695.n4.nabble.com/Breaking-up-a-vector-tp4631329p4631342.html Sent from the R help mailing list archive at Nabble.com.
Learn how to put parentheses in expression when you do not know what the operator precedence is: z <- lx[(1+(i-1)*7):((i)*7)] On Fri, May 25, 2012 at 11:29 AM, AOLeary <aodhanol at gmail.com> wrote:> Hi all, > > My problem is as follows: > > I want to run a loop which calculates two values and stores them in vectors > r and rv, respectively. > They're calculated from some vector x with length a multiple of 7. > > x <- c(1:2058) > > I need to difference the values but it would be incorrect to difference it > all in x, it has to be broken up first. I've tried the following: > > r <- c(1:294)*0 > rv <- c(1:294)*0 > > #RUN A LOOP WHERE YOU INPUT THE lx[(i-1)*7:i*7] INTO Z > for (i in 1:294){ > #CREATE A NEW VECTOR OF LENGTH 7 > z <- NULL > length(z)=7 > dz <- NULL > dz2 <- NULL > > #STORE THE VALUES IN z > z <- lx[1+(i-1)*7:(i)*7] > > #THEN DIFFERENCE THOSE > #THIS IS r_t,i,m > dz=diff(z) > > #SUM THIS UP AND STORE IT IN r, THIS IS r_t > r[i] <- sum(dz) > > #SUM UP THE SQUARES AND STORE IT IN rv, THIS IS RV_t > dz2 <- dz^2 > rv[i] <- sum(dz2) > #END THE LOOP > } > > > However, the window seems to expand for some reason, so z ends up being a > much longer vector than it should be and full of NAs. > > > Any help or advice is much appreciated. > > Aodh?n > > > -- > View this message in context: http://r.789695.n4.nabble.com/Breaking-up-a-vector-tp4631329.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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? Tell me what you want to do, not how you want to do it.