On 2010-08-05 12:14, Ulrike Grömping wrote:
Gabor Grothendieck schrieb:
On Thu, Aug 5, 2010 at 12:24 PM, Ulrike Grömping
<groemp...@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

This is another example of why it's a good idea to avoid
the '$' notation when fiddling with data frames. Try this:

 sw <- swiss[1:5, 1:4]
 sw[["Fert"]]
 sw[["Fert"]] <- 10

and my preferred version:
 sw[, "Fert"]
 sw[, "Fert"] <- 10

I've never liked partial matching for data frames.

  -Peter Ehlers

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to