Just a thought: Did you try na.rm = TRUE in case you have an object named "T" in scope? -- Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Thu, Jul 27, 2017 at 7:49 AM, Dimitri Liakhovitski <dimitri.liakhovitski at gmail.com> wrote:> To clarify: my question is not about "who could I exclude NAs from being > counted" - I know how to do that. > My question is: Why na.rm = T is not working for geom_bar in this case? > > On Thu, Jul 27, 2017 at 8:24 AM, Dimitri Liakhovitski < > dimitri.liakhovitski at gmail.com> wrote: > >> Hello! >> >> I am trying to understand how ggplot2's geom_bar treats NAs. >> The help file says: >> >> library(ggplot2) >> ?geom_bar >> na.rm: If FALSE, the default, missing values are removed with a warning. >> If TRUE, missing values are silently removed. >> >> I am trying it out: >> md <- data.frame(a = c(letters[1:5], letters[1:4], letters[1:3], rep(NA, >> 3))) >> str(md); levels(md$a) >> >> ggplot(data = md, mapping = aes(x = a)) + >> geom_bar(na.rm = F) >> It runs without warnings and generates counts for each factor level AS >> WELL AS the NAs. Makes sense. >> >> Now, I don't want the NAs to be counted. So, I run: >> ggplot(data = md, mapping = aes(x = a)) + >> geom_bar(na.rm = T) >> >> But I still have NAs in the picture. Why? >> What am I missing? >> >> Thank you! >> -- >> Dimitri Liakhovitski >> > > > > -- > Dimitri Liakhovitski > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.
Thank you, Bert! I do NOT have an object named "T" in scope (I checked - and besides, it would never occur to me to use this name). TRUE or T results in the same unexpected behavior: ggplot(data = md, mapping = aes(x = a)) + geom_bar(na.rm = TRUE) On Thu, Jul 27, 2017 at 10:57 AM, Bert Gunter <bgunter.4567 at gmail.com> wrote:> Just a thought: > > Did you try na.rm = TRUE in case you have an object named "T" in scope? > > -- Bert > > > Bert Gunter > > "The trouble with having an open mind is that people keep coming along > and sticking things into it." > -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) > > > On Thu, Jul 27, 2017 at 7:49 AM, Dimitri Liakhovitski > <dimitri.liakhovitski at gmail.com> wrote: > > To clarify: my question is not about "who could I exclude NAs from being > > counted" - I know how to do that. > > My question is: Why na.rm = T is not working for geom_bar in this case? > > > > On Thu, Jul 27, 2017 at 8:24 AM, Dimitri Liakhovitski < > > dimitri.liakhovitski at gmail.com> wrote: > > > >> Hello! > >> > >> I am trying to understand how ggplot2's geom_bar treats NAs. > >> The help file says: > >> > >> library(ggplot2) > >> ?geom_bar > >> na.rm: If FALSE, the default, missing values are removed with a warning. > >> If TRUE, missing values are silently removed. > >> > >> I am trying it out: > >> md <- data.frame(a = c(letters[1:5], letters[1:4], letters[1:3], rep(NA, > >> 3))) > >> str(md); levels(md$a) > >> > >> ggplot(data = md, mapping = aes(x = a)) + > >> geom_bar(na.rm = F) > >> It runs without warnings and generates counts for each factor level AS > >> WELL AS the NAs. Makes sense. > >> > >> Now, I don't want the NAs to be counted. So, I run: > >> ggplot(data = md, mapping = aes(x = a)) + > >> geom_bar(na.rm = T) > >> > >> But I still have NAs in the picture. Why? > >> What am I missing? > >> > >> Thank you! > >> -- > >> Dimitri Liakhovitski > >> > > > > > > > > -- > > Dimitri Liakhovitski > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > > 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. >-- Dimitri Liakhovitski [[alternative HTML version deleted]]
I think you should be more suspicious of yourself, Dimitri. A letter T variable can easily arise in the problem domain when you are not thinking of logical values at all, at which point your cavalier use of T as a synonym for TRUE can suddenly become a bug. -- Sent from my phone. Please excuse my brevity. On July 27, 2017 8:18:03 AM PDT, Dimitri Liakhovitski <dimitri.liakhovitski at gmail.com> wrote:>Thank you, Bert! > >I do NOT have an object named "T" in scope (I checked - and besides, it >would never occur to me to use this name). >TRUE or T results in the same unexpected behavior: > >ggplot(data = md, mapping = aes(x = a)) + > geom_bar(na.rm = TRUE) > > > >On Thu, Jul 27, 2017 at 10:57 AM, Bert Gunter <bgunter.4567 at gmail.com> >wrote: > >> Just a thought: >> >> Did you try na.rm = TRUE in case you have an object named "T" in >scope? >> >> -- Bert >> >> >> Bert Gunter >> >> "The trouble with having an open mind is that people keep coming >along >> and sticking things into it." >> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) >> >> >> On Thu, Jul 27, 2017 at 7:49 AM, Dimitri Liakhovitski >> <dimitri.liakhovitski at gmail.com> wrote: >> > To clarify: my question is not about "who could I exclude NAs from >being >> > counted" - I know how to do that. >> > My question is: Why na.rm = T is not working for geom_bar in this >case? >> > >> > On Thu, Jul 27, 2017 at 8:24 AM, Dimitri Liakhovitski < >> > dimitri.liakhovitski at gmail.com> wrote: >> > >> >> Hello! >> >> >> >> I am trying to understand how ggplot2's geom_bar treats NAs. >> >> The help file says: >> >> >> >> library(ggplot2) >> >> ?geom_bar >> >> na.rm: If FALSE, the default, missing values are removed with a >warning. >> >> If TRUE, missing values are silently removed. >> >> >> >> I am trying it out: >> >> md <- data.frame(a = c(letters[1:5], letters[1:4], letters[1:3], >rep(NA, >> >> 3))) >> >> str(md); levels(md$a) >> >> >> >> ggplot(data = md, mapping = aes(x = a)) + >> >> geom_bar(na.rm = F) >> >> It runs without warnings and generates counts for each factor >level AS >> >> WELL AS the NAs. Makes sense. >> >> >> >> Now, I don't want the NAs to be counted. So, I run: >> >> ggplot(data = md, mapping = aes(x = a)) + >> >> geom_bar(na.rm = T) >> >> >> >> But I still have NAs in the picture. Why? >> >> What am I missing? >> >> >> >> Thank you! >> >> -- >> >> Dimitri Liakhovitski >> >> >> > >> > >> > >> > -- >> > Dimitri Liakhovitski >> > >> > [[alternative HTML version deleted]] >> > >> > ______________________________________________ >> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> > 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. >>