> * Sam Steingold <f...@tah.bet> [2011-07-05 15:30:02 -0400]: > > I want to modify etr.rt (or create a new frame etr.rt.md) which would > have all the columns of etr.rt plus 5 additional columns > > market.cap > X52.week.low > X52.week.high > X3.month.average.daily.volume > X50.day.moving.average.price > > which for the row number i in etr.rt come from > ysmd.table[[as.character(etr.rt$symbol[[i]])]] > (obviously, > > etr.rt$symbol[[i]] == ysmd.table[[as.character(etr.rt$symbol[[i]])]]$X.stock > > )
this function does the job but it unthinkably slow. ysmd.extend <- function (fr) { len <- dim(fr)[1]; fr$mcap <- vector(mode="numeric", len); fr$lo52 <- vector(mode="numeric", len); fr$hi52 <- vector(mode="numeric", len); fr$dvol <- vector(mode="numeric", len); fr$ma50 <- vector(mode="numeric", len); for (i in 1:len) { cat(i," ",fr$symbol[[i]],"(",as.character(fr$symbol[[i]]),")\n") tmp <- ysmd.table[[as.character(fr$symbol[[i]])]]; fr$mcap[i] <- tmp$market.cap; fr$lo52[i] <- tmp$X52.week.low; fr$hi52[i] <- tmp$X52.week.high; fr$dvol[i] <- tmp$X3.month.average.daily.volume; fr$ma50[i] <- tmp$X50.day.moving.average.price; } fr } system.time(etr.rt <- ysmd.extend(etr.rt)); is there a way to do this without the inner for loop? thanks! -- Sam Steingold (http://sds.podval.org/) on CentOS release 5.6 (Final) X 11.0.60900031 http://mideasttruth.com http://www.memritv.org http://ffii.org http://iris.org.il http://dhimmi.com http://memri.org http://palestinefacts.org Politically Correct Chess: Translucent VS. Transparent. ______________________________________________ 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.