On 6/17/2011 2:24 PM, (Ted Harding) wrote:
And the extra twist in the tale is exemplified by this mini-version of Albert-Jan's first example:DF<- data.frame(A=c(1,2,3)) DF$B<- c(4,5,6) DF$C<- c(7,8,9) DF # A B C # 1 1 4 7 # 2 2 5 8 # 3 3 6 9 DF$D<- DF["A"]/DF["B"] DF # A B C A # 1 1 4 7 0.25 # 2 2 5 8 0.40 # 3 3 6 9 0.50 ##And why: DF["A"]/DF["B"] # A # 1 0.25 # 2 0.40 # 3 0.50 ##So the ratio DF["A"]/DF["B"] comes out with the name of ##the numerator, "A". This is then the name given to DF$D
It's even slightly weirder than that: str(DF) #'data.frame': 3 obs. of 4 variables: # $ A: num 1 2 3 # $ B: num 4 5 6 # $ C: num 7 8 9 # $ D:'data.frame': 3 obs. of 1 variable: # ..$ A: num 0.25 0.4 0.5There is a column D in DF which is itself a data frame with a single column whose name is A (because of what Ted said). When formatted for printing out, the column name of the inner data frame is used (as a result of how data.frame() itself handles named arguments when the argument is itself a data.frame: "If a list or data frame or matrix is passed to data.frame it is as if each component or column had been passed as a separate argument...").
So not a bug, but a convoluted set of circumstances that can happen when non-atomic vectors are assigned to columns of a data.frame. That's one of those /you shouldn't do that even though it is technically legal or at least you shouldn't be surprised when things don't work the way you thought they would/ things.
Thus Albert-Jan's df["weight"] / ave(df["weight"], df["sex"], FUN=sum)*100 comes through with name "weight". Ted. On 17-Jun-11 21:06:42, William Dunlap wrote:df$varname is a column of df. df["varname"] is a one-column df containing that column. df[["varname"]] is a column of df (same as df$varname). df[,"varname"] is a column of df (same as df$varname). df[,"varname",drop=FALSE] is a one-column df (same as df$varname). df$newVarname<- df["varname"] inserts a new component into df, the component being a one-column data.frame, not the column in that data.frame. Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com-----Original Message----- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of Albert-Jan Roskam Sent: Friday, June 17, 2011 1:49 PM To: R Mailing List Subject: [R] is this a bug? Hello, Is the following a bug? I always thought that df$varname<- does the same as df["varname"]<-df<- data.frame(weight=round(runif(10, 10, 100)),sex=round(runif(100, 0, 1)))df$pct<- df["weight"] / ave(df["weight"], df["sex"], FUN=sum)*100 names(df)[1] "weight" "sex" "pct" ### ----------> okhead(df)weight sex weight ### ----------> huh!?! 1 86 0 2.4002233 2 19 1 0.5643006 3 32 0 0.8931063 4 87 0 2.4281328 5 45 0 1.2559308 6 95 0 2.6514094rm(df) df<- data.frame(weight=round(runif(10, 10, 100)),sex=round(runif(100, 0, 1)))df["pct"]<- df["weight"] / ave(df["weight"], df["sex"],FUN=sum)*100 ###-----> this does work names(df)[1] "weight" "sex" "pct"head(df)weight sex pct 1 15 0 0.5246590 2 43 0 1.5040224 3 17 1 0.9284544 4 44 1 2.4030584 5 76 1 4.1507373 6 59 0 2.0636586do.call(c, R.Version())platform arch "i686-pc-linux-gnu" "i686" os system "linux-gnu" "i686, linux-gnu" status major "" "2" minor year "11.1" "2010" month day "05" "31" svn rev language "52157" "R" version.string "R version 2.11.1 (2010-05-31)"# Thanks!Cheers!! Albert-Jan ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ All right, but apart from the sanitation, the medicine, education, wine, public order, irrigation, roads, a fresh water system, and public health, what have the Romans ever done for us? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [[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.______________________________________________ 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.-------------------------------------------------------------------- E-Mail: (Ted Harding)<ted.hard...@wlandres.net> Fax-to-email: +44 (0)870 094 0861 Date: 17-Jun-11 Time: 22:24:41 ------------------------------ XFMail ------------------------------
-- Brian S. Diggs, PhD Senior Research Associate, Department of Surgery Oregon Health & Science University ______________________________________________ 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.