Duh, thought of that after I'd left for dinner :( --- On Sat, 10/31/09, David Winsemius <dwinsem...@comcast.net> wrote:
> From: David Winsemius <dwinsem...@comcast.net> > Subject: Re: [R] how to loop thru a matrix or data frame , and append > calculations to a new data frame? > To: "John Kane" <jrkrid...@yahoo.ca> > Cc: r-help@r-project.org, "Robert Wilkins" <robst...@gmail.com> > Received: Saturday, October 31, 2009, 2:00 PM > On Oct 31, 2009, at 12:33 PM, John > Kane wrote: > > > Do you mean to apply the same calculation to each > element? > > > > ? apply > > > > mydata <- data.frame(aa = 1:5, bb= 11:15) > > mp5 <- function(x) x*5 > > mp5data <- apply(mydata, 2, mp5) > > mp5data > > It would have been much more compact (and in the spirit of > functional programming) to just do: > > mp5data <- mydata*5 > # binary operations applied to dataframes give sensible > results when the data types allow. > mp5data > aa bb > [1,] 5 55 > [2,] 10 60 > [3,] 15 65 > [4,] 20 70 > [5,] 25 75 > > Many times the loops are implicit in the vectorized design > of R. And that solution would not result in the structure > requested, for which some further "straightening" would be > needed: > > > mp5data <- as.vector(as.matrix(mydata)*5) > > mp5data > [1] 5 10 15 20 25 55 60 65 70 75 > > -- David > > > > This is functionally equivelent to a double if loop. > > > > mydata <- data.frame(aa = 1:5, bb= 11:15) > > newdata <- data.frame(matrix(rep(NA,10), nrow=5)) > > > > for (i in 1:length(mydata[1,])) { > > for (j in 1:5) { > > newdata[j,i] <- mydata[j,i]*5 > > } > > } > > > > newdata > > > > > > > > --- On Fri, 10/30/09, Robert Wilkins <robst...@gmail.com> > wrote: > > > >> From: Robert Wilkins <robst...@gmail.com> > >> Subject: [R] how to loop thru a matrix or data > frame , and append calculations to a new data frame? > >> To: r-help@r-project.org > >> Received: Friday, October 30, 2009, 11:46 AM > >> How do you do a double loop through a > >> matrix or data frame , and > >> within each iteration , do a calculation and > append it to a > >> new, > >> second data frame? > >> (So, if your original matrix or data frame is 4 x > 5 , then > >> 20 > >> calculations are done, and the new data frame, > which had 0 > >> rows to > >> start with, now has 20 rows) > >> > >> ______________________________________________ > >> 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. > >> > > > > ______________________________________________ > > 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. > > David Winsemius, MD > Heritage Laboratories > West Hartford, CT > > __________________________________________________________________ Yahoo! Canada Toolbar: Search from anywhere on the web, and bookmark your favourite sites. Download it now http://ca.toolbar.yahoo.com. ______________________________________________ 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.