sp219
2005-Aug-12 12:41 UTC
[R] coercing created variables into a new data frame using na.omit()
Hi, I am an R newbie and one thing I am having trouble with binding variables that I have created within one data frame into a new data frame when using na.omit(). To illustrate this problem I will give the example I am working on and the approah I have been using:- data.frame1<-filepath.... attach(data.frame1) #create a new variable using a function new.variable<-rep(1,length(weight3)) for (x in 1:length(new.variable)) {f<-((((age1[x]-7)*(weight[x]-mw))+((age2[x]-7)*(weight2[x]-mw))+((age3[x]-7)* (weight3[x]-mw)))/(((age1[x]-7)^2)+((age2[x]-7)^2)+((age3[x]-7)^2))); new.variable[x]<-f} #then bind it into the existing old data frame data.frame2<-cbind(data.frame1,newvariable) rm(dat.frame1) attach(data.frame2) #everything o.k. so far but now the problem part... I basically want to remove all the rows with NA in the new data frame including corresponding rows in the new variable data.frame3<-na.omit(data.frame2) rm(data.frame2) attach(data.frame3) length of new.variable has not changed but the length of all the other variables in data.frame2 has? Could someone please provide an explanation or an alternative route if possible? Any suggestions much appreciated, Thankyou, Simon Pickett Simon Pickett Centre for Ecology and Conservation Biology University of Exeter in Cornwall Tremough Campus Penryn Cornwall TR10 9EZ UK Tel: 01326371852
sp219
2005-Aug-12 12:42 UTC
[R] coercing created variables into a new data frame using na.omit()
Hi, I am an R newbie and one thing I am having trouble with binding variables that I have created within one data frame into a new data frame when using na.omit(). To illustrate this problem I will give the example I am working on and the approah I have been using:- data.frame1<-filepath.... attach(data.frame1) #create a new variable using a function new.variable<-rep(1,length(weight3)) for (x in 1:length(new.variable)) {f<-((((age1[x]-7)*(weight[x]-mw))+((age2[x]-7)*(weight2[x]-mw))+((age3[x]-7)* (weight3[x]-mw)))/(((age1[x]-7)^2)+((age2[x]-7)^2)+((age3[x]-7)^2))); new.variable[x]<-f} #then bind it into the existing old data frame data.frame2<-cbind(data.frame1,newvariable) rm(dat.frame1) attach(data.frame2) #everything o.k. so far but now the problem part... I basically want to remove all the rows with NA in the new data frame including corresponding rows in the new variable data.frame3<-na.omit(data.frame2) rm(data.frame2) attach(data.frame3) length of new.variable has not changed but the length of all the other variables in data.frame2 has? Could someone please provide an explanation or an alternative route if possible? Any suggestions much appreciated, Thankyou, Simon Pickett Simon Pickett Centre for Ecology and Conservation Biology University of Exeter in Cornwall Tremough Campus Penryn Cornwall TR10 9EZ UK Tel: 01326371852
Prof Brian Ripley
2005-Aug-12 12:59 UTC
[R] coercing created variables into a new data frame using na.omit()
I don't know if you can read your message, but I find it exceedingly difficult and there seem to be several typos. Please use the space and return keys ... and only send a message once. You problem is perhaps that you are not looking at the data frame, but at the variable in the workspace. attach()ing data frames is convenient but error-prone (as you have found). rm(new.variable) should solve this, but it is better to cultivate a different style. For example with(data.frame1, { # commands to create value data.frame1$new.variable <- value }) data.frame3 <- na.omit(data.frame1) I think too that the creation of the value can be vectorized simply, generalizing something like value <- (age1 - 7)*(weight - mw) On Fri, 12 Aug 2005, sp219 wrote:> Hi, > I am an R newbie and one thing I am having trouble with binding variables that > I have created within one data frame into a new data frame when using > na.omit(). To illustrate this problem I will give the example I am working on > and the approah I have been using:- > data.frame1<-filepath.... > attach(data.frame1) > #create a new variable using a function > new.variable<-rep(1,length(weight3)) > for (x in 1:length(new.variable)) > {f<-((((age1[x]-7)*(weight[x]-mw))+((age2[x]-7)*(weight2[x]-mw))+((age3[x]-7)* > (weight3[x]-mw)))/(((age1[x]-7)^2)+((age2[x]-7)^2)+((age3[x]-7)^2))); > new.variable[x]<-f} > #then bind it into the existing old data frame > data.frame2<-cbind(data.frame1,newvariable) > rm(dat.frame1) > attach(data.frame2) > #everything o.k. so far but now the problem part... I basically want to remove > all the rows with NA in the new data frame including corresponding rows in the > new variable > data.frame3<-na.omit(data.frame2) > rm(data.frame2) > attach(data.frame3) > length of new.variable has not changed but the length of all the other > variables in data.frame2 has? > Could someone please provide an explanation or an alternative route if > possible? > Any suggestions much appreciated, > Thankyou, Simon Pickett > > Simon Pickett > Centre for Ecology and Conservation Biology > University of Exeter in Cornwall > Tremough Campus > Penryn > Cornwall > TR10 9EZ UK > Tel: 01326371852 > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html >-- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595