Try this: transform(transform(x, c = a ^ 2, d = b ^2), e = c + d)
On Wed, Sep 2, 2009 at 10:27 AM, RINNER Heinrich < heinrich.rin...@tirol.gv.at> wrote: > Dear R community, > > I am using function 'within' in R.2.9.1 to add variables to an existing > data.frame. This works wonderful, except for one minor point: The new > variables are added to the data in reverse order. > > For example: > x <- data.frame(a = 1:3, b = 4:6) > y <- within(x, { > c = a^2 > d = b^2 > e = c+d > } > ) > gives > a b e d c > 1 1 4 17 16 1 > 2 2 5 29 25 4 > 3 3 6 45 36 9 > > Just what I want; except that I would prefer the columns to be in order > a,b,c,d,e instead. > > I could use transform ("transform(x, c=a^2, d=b^2, e=c+d)"), which > preserves the specified order of variables, but that won't work here because > unfortunately it doesn't find object 'd' (same with "within(x, {e = c+d; d = > b^2; c = a^2})", by the way). > > Of course in my toy example I can easily do something like y[, c(1:2,5:3)] > afterwards, but I'd like to ask if maybe there is a simple way to make > 'within' preserve the order of specified variables (or maybe someone can > shed light on why this is not possible?). > > Thanks, > Heinrich. > > ______________________________________________ > 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. > -- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O [[alternative HTML version deleted]]
______________________________________________ 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.