Hello, Sometimes the looping (using "for") seems to skip some iterations. An example: arg <- matrix(NA,length(seq(.30,.5,.01)),1) for (i in seq(.30,.5,.01)) { arg[i*100-29] <- i } arg What is the problem with this coding, please? Thank you so much, -- Bruno Cara Giovannetti, PhD Candidate Economics Department Columbia University Personal Webpage: www.columbia.edu/~bcg2108
it doesn't skip... think about why: seq(.30,.5,.01) * 100 - 29 == 1:21 isn't always TRUE. b On Nov 17, 2009, at 9:17 PM, Bruno Giovannetti wrote:> Hello, > > Sometimes the looping (using "for") seems to skip some iterations. > > An example: > > arg <- matrix(NA,length(seq(.30,.5,.01)),1) > for (i in seq(.30,.5,.01)) { > arg[i*100-29] <- i > } > arg > > What is the problem with this coding, please? > > Thank you so much, > -- > Bruno Cara Giovannetti, PhD Candidate > Economics Department > Columbia University > Personal Webpage: www.columbia.edu/~bcg2108 > > ______________________________________________ > 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.
> -----Original Message----- > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On > Behalf Of Bruno Giovannetti > Sent: Tuesday, November 17, 2009 3:18 PM > To: r-help at r-project.org > Subject: [R] :Problem with Looping > > Hello, > > Sometimes the looping (using "for") seems to skip some iterations. > > An example: > > arg <- matrix(NA,length(seq(.30,.5,.01)),1) > for (i in seq(.30,.5,.01)) { > arg[i*100-29] <- i > } > arg > > What is the problem with this coding, please? > > Thank you so much, > -- > Bruno Cara Giovannetti, PhD Candidate > Economics Department > Columbia University > Personal Webpage: www.columbia.edu/~bcg2108Don't use floating point operations in your indexing. You may also want to change how you generate your sequence. This is a floating point representation problem. See FAQ 7.31. Try something like this arg <- matrix(NA,length(seq(30,50,1)),1) for (i in seq(30,50,1)) {arg[i-29] <- i/100 } Hope this is helpful, Dan Daniel J. Nordlund Washington State Department of Social and Health Services Planning, Performance, and Accountability Research and Data Analysis Division Olympia, WA 98504-5204