Re: [Rd] "table(droplevels(aq)$Month)" in manual page of droplevels

2017-04-13 Thread Martin Maechler
> Rui Barradas 
> on Wed, 12 Apr 2017 17:07:45 +0100 writes:

> Hello, Inline.

> Em 12-04-2017 16:40, Henric Winell escreveu:
>> (Let's keep the discussion on-list -- I've added back
>> R-devel.)
>> 
>> On 2017-04-12 16:39, Ulrich Windl wrote:
>> 
> Henric Winell  schrieb am
>> 12.04.2017
> um 15:35 in
>>> Nachricht
>>> :
 On 2017-04-12 14:40, Ulrich Windl wrote:
 
> The last line of the example in droplevels' manual
> page seems to be incorrect to me. I think it should
> read: "table(droplevels(aq$Month))". Amazingly (I
> don't understand) both variants seem to produce the
> same result (R 3.3.3): ---
 
 The manual says that "The function 'droplevels' is used
 to drop unused levels from a 'factor' or, more
 commonly, from factors in a data frame." and, as
 documented, the 'droplevels' generic has methods for
 objects of class "data.frame" and "factor".  So, your
 being amazed is a bit surprising given that 'aq' is a
 data frame.
>>> 
>>> The "surprising" thing is the syntax: I was unaware that
>>> '$' is a generic operator that can be applied to the
>>> result of a function (i.e.: droplevels); I thought it's
>>> kind of a special variable syntax.
>> 
>> Then your surprise is unrelated to the use of
>> 'droplevels'.
>> 
>> Since the 'droplevels' method for objects of class
>> "data.frame" returns a data frame, the extraction
>> operator '$' works directly on the resulting object.  So,
>> 'droplevels(aq)$Month' is essentially the same as
>> 
>> aq <- droplevels(aq) aq$Month
>> 
>> > Isn't there also the syntax
>> ``droplevels(aq)["Month"]''?
>> 
>> Sure, and there are even more ways to do subsetting.  But
>> this is basic stuff and therefore off-topic for R-devel.
>> Please see the manual (?Extract) or, e.g., Chapter 3 of
>> Hadley Wickham's "Advanced R".

> But note that droplevels(aq)["Month"] and
> droplevels(aq)$Month are _not_ the same. The first returns
> a data.frame (with just one vector), the latter returns a
> vector. To return just a vector you could also use

> droplevels(aq)[["Month"]]

> which is preferable for programming, by the way. The '$'
> operator should be reserved for interactive use only.

> Hope this helps,

Indeed, we hope..  Thanks to the helpers!

Ulrich, please note that in the end this was all  because you're
still learning to understand R (e.g., data frames !) better.

As such this was completely inappropriate for R-devel and should
have gotten to the R help list  R-help.

With regards,
Martin Maechler, ETH Zurich

> Rui Barradas
>> 
>> 
>> Henric Winell
>>> 
>>> Regards, Ulrich
>>> 
 
 
 Henric Winell
 
 
 
> aq <- transform(airquality, Month = factor(Month, labels =
> month.abb[5:9])) aq <- subset(aq, Month != "Jul")
> table(aq$Month)
> 
> May Jun Jul Aug Sep 31 30 0 31 30
> table(droplevels(aq)$Month)
> 
> May Jun Aug Sep 31 30 31 30
> table(droplevels(aq$Month))
> 
> May Jun Aug Sep 31 30 31 30
>> 
> --- For the sake of learners, try to keep the examples
> simple and useful, even though you experts want to
> impress the newbees...
> 
> Ulrich
> 
> __
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
>>> 
>>> 
>>> 
>>> 
>>> 
>> 
>> __
>> R-devel@r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel

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

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


Re: [Rd] "table(droplevels(aq)$Month)" in manual page of droplevels

2017-04-12 Thread Rui Barradas

Hello,

Inline.

Em 12-04-2017 16:40, Henric Winell escreveu:

(Let's keep the discussion on-list -- I've added back R-devel.)

On 2017-04-12 16:39, Ulrich Windl wrote:


Henric Winell  schrieb am 12.04.2017
um 15:35 in

Nachricht :

On 2017-04-12 14:40, Ulrich Windl wrote:


The last line of the example in droplevels' manual page seems to
be incorrect to me. I think it should read:
"table(droplevels(aq$Month))". Amazingly (I don't understand)
both variants seem to produce the same result (R 3.3.3): ---


The manual says that "The function 'droplevels' is used to drop
unused levels from a 'factor' or, more commonly, from factors in a
data frame." and, as documented, the 'droplevels' generic has
methods for objects of class "data.frame" and "factor".  So, your
being amazed is a bit surprising given that 'aq' is a data frame.


The "surprising" thing is the syntax: I was unaware that '$' is a
generic operator that can be applied to the result of a function
(i.e.: droplevels); I thought it's kind of a special variable syntax.


Then your surprise is unrelated to the use of 'droplevels'.

Since the 'droplevels' method for objects of class "data.frame" returns
a data frame, the extraction operator '$' works directly on the
resulting object.  So, 'droplevels(aq)$Month' is essentially the same as

aq <- droplevels(aq)
aq$Month

 > Isn't there also the syntax ``droplevels(aq)["Month"]''?

Sure, and there are even more ways to do subsetting.  But this is basic
stuff and therefore off-topic for R-devel.  Please see the manual
(?Extract) or, e.g., Chapter 3 of Hadley Wickham's "Advanced R".


But note that droplevels(aq)["Month"] and droplevels(aq)$Month are _not_ 
the same. The first returns a data.frame (with just one vector), the 
latter returns a vector. To return just a vector you could also use


droplevels(aq)[["Month"]]

which is preferable for programming, by the way. The '$' operator should 
be reserved for interactive use only.


Hope this helps,

Rui Barradas



Henric Winell





Regards, Ulrich




Henric Winell




aq <- transform(airquality, Month = factor(Month, labels =
month.abb[5:9])) aq <- subset(aq, Month != "Jul")
table(aq$Month)


May Jun Jul Aug Sep 31  30   0  31  30

table(droplevels(aq)$Month)


May Jun Aug Sep 31  30  31  30

table(droplevels(aq$Month))


May Jun Aug Sep 31  30  31  30



--- For the sake of learners, try to keep the examples simple
and useful, even though you experts want to impress the
newbees...

Ulrich

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









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


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


Re: [Rd] "table(droplevels(aq)$Month)" in manual page of droplevels

2017-04-12 Thread Henric Winell

(Let's keep the discussion on-list -- I've added back R-devel.)

On 2017-04-12 16:39, Ulrich Windl wrote:


Henric Winell  schrieb am 12.04.2017
um 15:35 in

Nachricht :

On 2017-04-12 14:40, Ulrich Windl wrote:


The last line of the example in droplevels' manual page seems to
be incorrect to me. I think it should read: 
"table(droplevels(aq$Month))". Amazingly (I don't understand)

both variants seem to produce the same result (R 3.3.3): ---


The manual says that "The function 'droplevels' is used to drop
unused levels from a 'factor' or, more commonly, from factors in a
data frame." and, as documented, the 'droplevels' generic has
methods for objects of class "data.frame" and "factor".  So, your
being amazed is a bit surprising given that 'aq' is a data frame.


The "surprising" thing is the syntax: I was unaware that '$' is a
generic operator that can be applied to the result of a function
(i.e.: droplevels); I thought it's kind of a special variable syntax.


Then your surprise is unrelated to the use of 'droplevels'.

Since the 'droplevels' method for objects of class "data.frame" returns 
a data frame, the extraction operator '$' works directly on the 
resulting object.  So, 'droplevels(aq)$Month' is essentially the same as


aq <- droplevels(aq)
aq$Month

> Isn't there also the syntax ``droplevels(aq)["Month"]''?

Sure, and there are even more ways to do subsetting.  But this is basic 
stuff and therefore off-topic for R-devel.  Please see the manual 
(?Extract) or, e.g., Chapter 3 of Hadley Wickham's "Advanced R".



Henric Winell





Regards, Ulrich




Henric Winell



aq <- transform(airquality, Month = factor(Month, labels = 
month.abb[5:9])) aq <- subset(aq, Month != "Jul")

table(aq$Month)


May Jun Jul Aug Sep 31  30   0  31  30

table(droplevels(aq)$Month)


May Jun Aug Sep 31  30  31  30

table(droplevels(aq$Month))


May Jun Aug Sep 31  30  31  30



--- For the sake of learners, try to keep the examples simple
and useful, even though you experts want to impress the
newbees...

Ulrich

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









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


Re: [Rd] "table(droplevels(aq)$Month)" in manual page of droplevels

2017-04-12 Thread Henric Winell

On 2017-04-12 14:40, Ulrich Windl wrote:


The last line of the example in droplevels' manual page seems to be
incorrect to me. I think it should read:
"table(droplevels(aq$Month))". Amazingly (I don't understand) both
variants seem to produce the same result (R 3.3.3): ---


The manual says that "The function 'droplevels' is used to drop unused 
levels from a 'factor' or, more commonly, from factors in a data frame." 
and, as documented, the 'droplevels' generic has methods for objects of 
class "data.frame" and "factor".  So, your being amazed is a bit 
surprising given that 'aq' is a data frame.



Henric Winell




aq <- transform(airquality, Month = factor(Month, labels =
month.abb[5:9])) aq <- subset(aq, Month != "Jul") table(aq$Month)


May Jun Jul Aug Sep 31  30   0  31  30

table(droplevels(aq)$Month)


May Jun Aug Sep 31  30  31  30

table(droplevels(aq$Month))


May Jun Aug Sep 31  30  31  30



--- For the sake of learners, try to keep the examples simple and
useful, even though you experts want to impress the newbees...

Ulrich

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



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


[Rd] "table(droplevels(aq)$Month)" in manual page of droplevels

2017-04-12 Thread Ulrich Windl
The last line of the example in droplevels' manual page seems to be incorrect 
to me. I think it should read: "table(droplevels(aq$Month))". Amazingly (I 
don't understand) both variants seem to produce the same result (R 3.3.3):
---
> aq <- transform(airquality, Month = factor(Month, labels = month.abb[5:9]))
> aq <- subset(aq, Month != "Jul")
> table(aq$Month)

May Jun Jul Aug Sep 
 31  30   0  31  30 
> table(droplevels(aq)$Month)

May Jun Aug Sep 
 31  30  31  30 
> table(droplevels(aq$Month))

May Jun Aug Sep 
 31  30  31  30 
>
---
For the sake of learners, try to keep the examples simple and useful, even 
though you experts want to impress the newbees...

Ulrich

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