On Fri, 5 Nov 2004, Janet Elise Rosenbaum wrote: > > I want to eliminate certain observations in a large dataframe (21000x100). > I have written code which does this using a binary vector (0=delete obs, > 1=keep), but it uses for loops, and so it's slow and in the extreme it > causes R to hang for indefinite time periods. > > I'm looking for one of two things: > 1. A document which discusses how to avoid for loops and situations in > which it's impossible to avoid for loops. > > or > > 2. A function which can do the above better than mine.
?subset newdata <- subset(DATAFRAME, asst==1) which will work whether DATAFRAME is a matrix or data.frame (two different classes). > > My code is pasted below. > > Thanks so much, > > Janet > > # asst is a binary vector of length= nrow(DATAFRAME). > # 1= observations you want to keep. 0= observation to get rid of. > > remove.xtra.f <-function(asst, DATAFRAME) { > n<-sum(asst, na.rm=T) > newdata<-matrix(nrow=n, ncol=ncol(DATAFRAME)) > j<-1 > for(i in 1:length(data)) { > if (asst[i]==1) { > newdata[j,]<-DATAFRAME[i,] > j<-j+1 > } > } > newdata.f<-as.data.frame(newdata) > names(newdata.f)<-names(DATAFRAME) > return(newdata.f) > } > -- > Janet Rosenbaum [EMAIL PROTECTED] > PhD Candidate in Health Policy, Harvard GSAS > Harvard Injury Control Research Center, Harvard School of Public Health > > ______________________________________________ > [EMAIL PROTECTED] mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html > -- Roger Bivand Economic Geography Section, Department of Economics, Norwegian School of Economics and Business Administration, Breiviksveien 40, N-5045 Bergen, Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93 e-mail: [EMAIL PROTECTED] ______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html