On Dec 2, 2014, at 10:08 AM, Jefferson Ferreira-Ferreira wrote: > Hello everybody; > > I'm writing a code where part of it is as follows: > > for (i in nrow(dadosmax)){ > dadosmax$enchday[i] <- if (sum(dadosmax$above[i:(i+44)]) >= 45) 1 else 0 > } > > That is for each row of my data frame, sum an specific column (0 or 1) of > that row plus 44 rows. If It is >=45 than enchday is 1 else 0. > > The following error is returned: > > Error in if (sum(dadosmax$above[i:(i + 44)]) >= 45) 1 else 0 : > missing value where TRUE/FALSE needed > > I've tested the ifelse statement assigning different values to i and it > works. So I'm wondering if this error is due the fact that at the final of > my data frame there aren't 45 rows to sum anymore. I tried to use "try" but > It's simply hide the error. > > How can I deal with this? Any ideas?
You should think about what would happen at the high end of values (for what is now being erroneously coded) for `nrow(dadosmax)` which a assume was meant to be `1:nrow(dadosmax)`. Should have been `seq_along(rownames(dadosmax))`. But even if that error were fixed you would be referencing non-existent rows as soon as you were within 44 rows of the end of the dataframe. -- David. > Thank you very much. > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. David Winsemius Alameda, CA, USA ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.