Ulrike Grömping
2010-Aug-05 16:24 UTC
[Rd] Assignment of individual values to data frame columns: intentional or unintentional behavior?
Dear developeRs, I have just discovered a strange feature when assigning some values to columns of a data frame: The column is matched by partial matching (as documented), but when assigning a value, a new column with the partial name is added to the data frame that is identical to the original column except for the changed value. Is that intentional ? An example: sw <- swiss[1:5, 1:4] sw sw$Fert[1] <- 10 sw Best, Ulrike -- *********************************************** * Ulrike Groemping * * BHT Berlin - University of Applied Sciences * *********************************************** * +49 (30) 39404863 (Home Office) * * +49 (30) 4504 5127 (BHT) * *********************************************** * http://prof.beuth-hochschule.de/groemping * * groemping at bht-berlin.de *
Gabor Grothendieck
2010-Aug-05 17:53 UTC
[Rd] Assignment of individual values to data frame columns: intentional or unintentional behavior?
On Thu, Aug 5, 2010 at 12:24 PM, Ulrike Gr?mping <groemping at bht-berlin.de> wrote:> Dear developeRs, > > I have just discovered a strange feature when assigning some values to > columns of a data frame: The column is matched by partial matching (as > documented), but when assigning a value, a new column with the partial name > is added to the data frame that is identical to the original column except > for the changed value. Is that intentional ? An example:Note that the lack of partial matching when performing assignment is also documented. See second last paragraph in Details section of ?Extract
Ulrike Grömping
2010-Aug-05 18:14 UTC
[Rd] Assignment of individual values to data frame columns: intentional or unintentional behavior?
Gabor Grothendieck schrieb:> On Thu, Aug 5, 2010 at 12:24 PM, Ulrike Gr?mping > <groemping at bht-berlin.de> wrote: > >> Dear developeRs, >> >> I have just discovered a strange feature when assigning some values to >> columns of a data frame: The column is matched by partial matching (as >> documented), but when assigning a value, a new column with the partial name >> is added to the data frame that is identical to the original column except >> for the changed value. Is that intentional ? An example: >> > > Note that the lack of partial matching when performing assignment is > also documented. > > See second last paragraph in Details section of ?Extract >Yes, I see, thanks. I looked at ?"[.data.frame", where this is not documented. However, given the documentation that partial matching is not used on the left-hand side, I would have expected even more that the assignment sw$Fert[1] <- 10 works differently, because I am using it on the left-hand side. Probably, extraction ([1]) is done first here, so that the right-hand side won. At least, this is very confusing. Best, Ulrike
Michael Lachmann
2010-Aug-05 21:35 UTC
[Rd] Assignment of individual values to data frame columns: intentional or unintentional behavior?
Ulrike Gr?mping wrote:> > > However, given the documentation that partial matching is not used on > the left-hand side, I would have expected even more that the assignment > > sw$Fert[1] <- 10 > > works differently, because I am using it on the left-hand side. > Probably, extraction ([1]) is done first here, so that the right-hand > side won. At least, this is very confusing. > >I totally agree! I think that sw <- data.frame(Fertility=1:5) sw$Fert[1] <- 10 should work either like sw$Fert2[1] <- 10 i.e. create new column, containing just 10. or like sw$Fertility[1] <- 10 i.e. replace the 1st item in sw$Fertility by 10. -- View this message in context: http://r.789695.n4.nabble.com/Assignment-of-individual-values-to-data-frame-columns-intentional-or-unintentional-behavior-tp2315105p2315641.html Sent from the R devel mailing list archive at Nabble.com.