On 10/25/2017 4:38 AM, Ista Zahn wrote:> On Tue, Oct 24, 2017 at 3:05 PM, BooBoo <booboo at gforcecable.com> wrote: >> This has every appearance of being a bug. If it is not a bug, can someone >> tell me what I am asking for when I ask for "x[x[,2]==0,]". Thanks. > You are asking for elements of x where the second column is equal to zero. > > help("==") > > and > > help("[") > > explain what happens when missing values are involved. I agree that > the behavior is surprising, but your first instinct when you discover > something surprising should be to read the documentation, not to post > to this list. After having read the documentation you may post back > here if anything remains unclear. > > Best, > Ista > >>> #here is the toy dataset >>> x <- rbind(c(1,1),c(2,2),c(3,3),c(4,0),c(5,0),c(6,NA), >> + c(7,NA),c(8,NA),c(9,NA),c(10,NA) >> + ) >>> x >> [,1] [,2] >> [1,] 1 1 >> [2,] 2 2 >> [3,] 3 3 >> [4,] 4 0 >> [5,] 5 0 >> [6,] 6 NA >> [7,] 7 NA >> [8,] 8 NA >> [9,] 9 NA >> [10,] 10 NA >>> #it contains rows that have NA's >>> x[is.na(x[,2]),] >> [,1] [,2] >> [1,] 6 NA >> [2,] 7 NA >> [3,] 8 NA >> [4,] 9 NA >> [5,] 10 NA >>> #seems like an unreasonable answer to a reasonable question >>> x[x[,2]==0,] >> [,1] [,2] >> [1,] 4 0 >> [2,] 5 0 >> [3,] NA NA >> [4,] NA NA >> [5,] NA NA >> [6,] NA NA >> [7,] NA NA >>> #this is more what I was expecting >>> x[which(x[,2]==0),] >> [,1] [,2] >> [1,] 4 0 >> [2,] 5 0 >> ______________________________________________ >> 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.I wanted to know if this was a bug so that I could report it if so. You say it is not, so you answered my question. As far as me not reading the documentation, I challenge anyone to read the cited help pages and predict the observed behavior based on the information given in those pages.
> On Oct 25, 2017, at 6:57 AM, BooBoo <booboo at gforcecable.com> wrote: > > On 10/25/2017 4:38 AM, Ista Zahn wrote: >> On Tue, Oct 24, 2017 at 3:05 PM, BooBoo <booboo at gforcecable.com> wrote: >>> This has every appearance of being a bug. If it is not a bug, can someone >>> tell me what I am asking for when I ask for "x[x[,2]==0,]". Thanks. >> You are asking for elements of x where the second column is equal to zero. >> >> help("==") >> >> and >> >> help("[") >> >> explain what happens when missing values are involved. I agree that >> the behavior is surprising, but your first instinct when you discover >> something surprising should be to read the documentation, not to post >> to this list. After having read the documentation you may post back >> here if anything remains unclear. >> >> Best, >> Ista >> >>>> #here is the toy dataset >>>> x <- rbind(c(1,1),c(2,2),c(3,3),c(4,0),c(5,0),c(6,NA), >>> + c(7,NA),c(8,NA),c(9,NA),c(10,NA) >>> + ) >>>> x >>> [,1] [,2] >>> [1,] 1 1 >>> [2,] 2 2 >>> [3,] 3 3 >>> [4,] 4 0 >>> [5,] 5 0 >>> [6,] 6 NA >>> [7,] 7 NA >>> [8,] 8 NA >>> [9,] 9 NA >>> [10,] 10 NA >>>> #it contains rows that have NA's >>>> x[is.na(x[,2]),] >>> [,1] [,2] >>> [1,] 6 NA >>> [2,] 7 NA >>> [3,] 8 NA >>> [4,] 9 NA >>> [5,] 10 NA >>>> #seems like an unreasonable answer to a reasonable question >>>> x[x[,2]==0,] >>> [,1] [,2] >>> [1,] 4 0 >>> [2,] 5 0 >>> [3,] NA NA >>> [4,] NA NA >>> [5,] NA NA >>> [6,] NA NA >>> [7,] NA NA >>>> #this is more what I was expecting >>>> x[which(x[,2]==0),] >>> [,1] [,2] >>> [1,] 4 0 >>> [2,] 5 0 >>> ______________________________________________ >>> 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. > > I wanted to know if this was a bug so that I could report it if so. You say it is not, so you answered my question. As far as me not reading the documentation, I challenge anyone to read the cited help pages and predict the observed behavior based on the information given in those pages.Some of us do share (or at least remember feeling) your pain. The ?Extract page is long and complex and there are several features that I find non-intuitive. But they are deemed desirable by others. I think I needed to read that page about ten times (with multiple different problems that needed explication) before it started to sink in. You are apparently on that same side of the split opinions on the feature of returning rows with logical NA's as I am. I've learned to use `which`, and I push back when the conoscienti says it's not needed. After you read it a few more times you may come to a different opinion. Many people come to R with preconceived notions of what words like "equals" or "list" or "vector" mean and then complain about the documentation. You would be better advised to spend more time studying the language. The help pages are precise but terse, and you need to spend time with the examples and with other tutorial material to recognize the gotcha's. Here's a couple of possibly helpful rules regarding "[[" and "[" and logical indexing: Nothing _equals_ NA. Selection operations with NA logical index item return NA. (Justified as a warning feature as I understand it.) "[" always returns a list. "[[" returns only one thing, but even that thing could be a list. Generally you want "[[" if you plan on testing for equality with a vector. The "R Inferno" by Burns is an effort to detail many more of the unexpected or irregular aspects of R (mostly inherited from S). -- Best of luck in your studies.> > ______________________________________________ > 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.David Winsemius Alameda, CA, USA 'Any technology distinguishable from magic is insufficiently advanced.' -Gehm's Corollary to Clarke's Third Law
... Just to be clear: David's end summary "[" always returns a list. "[[" returns only one thing, but even that thing could be a list. Generally you want "[[" if you plan on testing for equality with a vector. applies to indexing on a **list**, of course, and not to vectors, matrices, etc. Cheers, 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 Wed, Oct 25, 2017 at 11:17 AM, David Winsemius <dwinsemius at comcast.net> wrote:> > > On Oct 25, 2017, at 6:57 AM, BooBoo <booboo at gforcecable.com> wrote: > > > > On 10/25/2017 4:38 AM, Ista Zahn wrote: > >> On Tue, Oct 24, 2017 at 3:05 PM, BooBoo <booboo at gforcecable.com> wrote: > >>> This has every appearance of being a bug. If it is not a bug, can > someone > >>> tell me what I am asking for when I ask for "x[x[,2]==0,]". Thanks. > >> You are asking for elements of x where the second column is equal to > zero. > >> > >> help("==") > >> > >> and > >> > >> help("[") > >> > >> explain what happens when missing values are involved. I agree that > >> the behavior is surprising, but your first instinct when you discover > >> something surprising should be to read the documentation, not to post > >> to this list. After having read the documentation you may post back > >> here if anything remains unclear. > >> > >> Best, > >> Ista > >> > >>>> #here is the toy dataset > >>>> x <- rbind(c(1,1),c(2,2),c(3,3),c(4,0),c(5,0),c(6,NA), > >>> + c(7,NA),c(8,NA),c(9,NA),c(10,NA) > >>> + ) > >>>> x > >>> [,1] [,2] > >>> [1,] 1 1 > >>> [2,] 2 2 > >>> [3,] 3 3 > >>> [4,] 4 0 > >>> [5,] 5 0 > >>> [6,] 6 NA > >>> [7,] 7 NA > >>> [8,] 8 NA > >>> [9,] 9 NA > >>> [10,] 10 NA > >>>> #it contains rows that have NA's > >>>> x[is.na(x[,2]),] > >>> [,1] [,2] > >>> [1,] 6 NA > >>> [2,] 7 NA > >>> [3,] 8 NA > >>> [4,] 9 NA > >>> [5,] 10 NA > >>>> #seems like an unreasonable answer to a reasonable question > >>>> x[x[,2]==0,] > >>> [,1] [,2] > >>> [1,] 4 0 > >>> [2,] 5 0 > >>> [3,] NA NA > >>> [4,] NA NA > >>> [5,] NA NA > >>> [6,] NA NA > >>> [7,] NA NA > >>>> #this is more what I was expecting > >>>> x[which(x[,2]==0),] > >>> [,1] [,2] > >>> [1,] 4 0 > >>> [2,] 5 0 > >>> ______________________________________________ > >>> 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. > > > > I wanted to know if this was a bug so that I could report it if so. You > say it is not, so you answered my question. As far as me not reading the > documentation, I challenge anyone to read the cited help pages and predict > the observed behavior based on the information given in those pages. > > Some of us do share (or at least remember feeling) your pain. The ?Extract > page is long and complex and there are several features that I find > non-intuitive. But they are deemed desirable by others. I think I needed to > read that page about ten times (with multiple different problems that > needed explication) before it started to sink in. You are apparently on > that same side of the split opinions on the feature of returning rows with > logical NA's as I am. I've learned to use `which`, and I push back when the > conoscienti says it's not needed. > > After you read it a few more times you may come to a different opinion. > Many people come to R with preconceived notions of what words like "equals" > or "list" or "vector" mean and then complain about the documentation. You > would be better advised to spend more time studying the language. The help > pages are precise but terse, and you need to spend time with the examples > and with other tutorial material to recognize the gotcha's. > > Here's a couple of possibly helpful rules regarding "[[" and "[" and > logical indexing: > > Nothing _equals_ NA. > Selection operations with NA logical index item return NA. (Justified as > a warning feature as I understand it.) > "[" always returns a list. > "[[" returns only one thing, but even that thing could be a list. > Generally you want "[[" if you plan on testing for equality with a vector. > > The "R Inferno" by Burns is an effort to detail many more of the > unexpected or irregular aspects of R (mostly inherited from S). > > -- > Best of luck in your studies. > > > > > > ______________________________________________ > > 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. > > David Winsemius > Alameda, CA, USA > > 'Any technology distinguishable from magic is insufficiently advanced.' > -Gehm's Corollary to Clarke's Third Law > > ______________________________________________ > 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. >[[alternative HTML version deleted]]
> On Oct 25, 2017, at 11:17 AM, David Winsemius <dwinsemius at comcast.net> wrote: > > >> On Oct 25, 2017, at 6:57 AM, BooBoo <booboo at gforcecable.com> wrote: >> >> On 10/25/2017 4:38 AM, Ista Zahn wrote: >>> On Tue, Oct 24, 2017 at 3:05 PM, BooBoo <booboo at gforcecable.com> wrote: >>>> This has every appearance of being a bug. If it is not a bug, can someone >>>> tell me what I am asking for when I ask for "x[x[,2]==0,]". Thanks. >>> You are asking for elements of x where the second column is equal to zero. >>> >>> help("==") >>> >>> and >>> >>> help("[") >>> >>> explain what happens when missing values are involved. I agree that >>> the behavior is surprising, but your first instinct when you discover >>> something surprising should be to read the documentation, not to post >>> to this list. After having read the documentation you may post back >>> here if anything remains unclear. >>> >>> Best, >>> Ista >>> >>>>> #here is the toy dataset >>>>> x <- rbind(c(1,1),c(2,2),c(3,3),c(4,0),c(5,0),c(6,NA), >>>> + c(7,NA),c(8,NA),c(9,NA),c(10,NA) >>>> + ) >>>>> x >>>> [,1] [,2] >>>> [1,] 1 1 >>>> [2,] 2 2 >>>> [3,] 3 3 >>>> [4,] 4 0 >>>> [5,] 5 0 >>>> [6,] 6 NA >>>> [7,] 7 NA >>>> [8,] 8 NA >>>> [9,] 9 NA >>>> [10,] 10 NA >>>>> #it contains rows that have NA's >>>>> x[is.na(x[,2]),] >>>> [,1] [,2] >>>> [1,] 6 NA >>>> [2,] 7 NA >>>> [3,] 8 NA >>>> [4,] 9 NA >>>> [5,] 10 NA >>>>> #seems like an unreasonable answer to a reasonable question >>>>> x[x[,2]==0,] >>>> [,1] [,2] >>>> [1,] 4 0 >>>> [2,] 5 0 >>>> [3,] NA NA >>>> [4,] NA NA >>>> [5,] NA NA >>>> [6,] NA NA >>>> [7,] NA NA >>>>> #this is more what I was expecting >>>>> x[which(x[,2]==0),] >>>> [,1] [,2] >>>> [1,] 4 0 >>>> [2,] 5 0 >>>> ______________________________________________ >>>> 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. >> >> I wanted to know if this was a bug so that I could report it if so. You say it is not, so you answered my question. As far as me not reading the documentation, I challenge anyone to read the cited help pages and predict the observed behavior based on the information given in those pages. > > Some of us do share (or at least remember feeling) your pain. The ?Extract page is long and complex and there are several features that I find non-intuitive. But they are deemed desirable by others. I think I needed to read that page about ten times (with multiple different problems that needed explication) before it started to sink in. You are apparently on that same side of the split opinions on the feature of returning rows with logical NA's as I am. I've learned to use `which`, and I push back when the conoscienti says it's not needed.horrible misspelling of cognoscenti> After you read it a few more times you may come to a different opinion. Many people come to R with preconceived notions of what words like "equals" or "list" or "vector" mean and then complain about the documentation. You would be better advised to spend more time studying the language. The help pages are precise but terse, and you need to spend time with the examples and with other tutorial material to recognize the gotcha's. > > Here's a couple of possibly helpful rules regarding "[[" and "[" and logical indexing: > > Nothing _equals_ NA. > Selection operations with NA logical index item return NA. (Justified as a warning feature as I understand it.) > "[" always returns a list.That's not true or even half true. "[" always returns a list if it's first argument is a list and it only has two arguments. If X is a list and you ask for X[vector] you get a list If you ask for X[vector, ] you may get a list or a vector. If you ask for X[two_column_matrix] you get a vector. I should be flogged.> "[[" returns only one thing, but even that thing could be a list.Horribl;y imprecise.> Generally you want "[[" if you plan on testing for equality with a vector.Don't listen to me. Read ....> > The "R Inferno" by Burns is an effort to detail many more of the unexpected or irregular aspects of R (mostly inherited from S). > > -- > Best of luck in your studies. > > >> >> ______________________________________________ >> 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. > > David Winsemius > Alameda, CA, USA > > 'Any technology distinguishable from magic is insufficiently advanced.' -Gehm's Corollary to Clarke's Third Law > > ______________________________________________ > 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.David Winsemius Alameda, CA, USA 'Any technology distinguishable from magic is insufficiently advanced.' -Gehm's Corollary to Clarke's Third Law
It's not a bug, and the rationale has been hashed over since the beginning of time... It is a bit of an annoyance in some contexts and part of the rationale for the existence of subset(). If you need an explanation, start with elementary vector indexing: colors <- c("red", "green", "blue") colors[c(1,3,2,NA,3)] You pretty clearly want the result to be a vector of length 5 with 4th element NA, right? Same story if you index into a data frame:> airquality[c(1,3,2,NA,2),]Ozone Solar.R Wind Temp Month Day 1 41 190 7.4 67 5 1 3 12 149 12.6 74 5 3 2 36 118 8.0 72 5 2 NA NA NA NA NA NA NA 2.1 36 118 8.0 72 5 2 Now, that's not an argument that you also get NA rows from logical indexing, but then comes the issue of automatic coercion: In colors[NA], the NA is actually mode "logical". If we removed NA indexes in logical indexing, we would have to explain why colors[c(1,NA)] has length 2 but colors[NA] has length zero (which it currently does not). -pd> On 25 Oct 2017, at 15:57 , BooBoo <booboo at gforcecable.com> wrote: > > On 10/25/2017 4:38 AM, Ista Zahn wrote: >> On Tue, Oct 24, 2017 at 3:05 PM, BooBoo <booboo at gforcecable.com> wrote: >>> This has every appearance of being a bug. If it is not a bug, can someone >>> tell me what I am asking for when I ask for "x[x[,2]==0,]". Thanks. >> You are asking for elements of x where the second column is equal to zero. >> >> help("==") >> >> and >> >> help("[") >> >> explain what happens when missing values are involved. I agree that >> the behavior is surprising, but your first instinct when you discover >> something surprising should be to read the documentation, not to post >> to this list. After having read the documentation you may post back >> here if anything remains unclear. >> >> Best, >> Ista >> >>>> #here is the toy dataset >>>> x <- rbind(c(1,1),c(2,2),c(3,3),c(4,0),c(5,0),c(6,NA), >>> + c(7,NA),c(8,NA),c(9,NA),c(10,NA) >>> + ) >>>> x >>> [,1] [,2] >>> [1,] 1 1 >>> [2,] 2 2 >>> [3,] 3 3 >>> [4,] 4 0 >>> [5,] 5 0 >>> [6,] 6 NA >>> [7,] 7 NA >>> [8,] 8 NA >>> [9,] 9 NA >>> [10,] 10 NA >>>> #it contains rows that have NA's >>>> x[is.na(x[,2]),] >>> [,1] [,2] >>> [1,] 6 NA >>> [2,] 7 NA >>> [3,] 8 NA >>> [4,] 9 NA >>> [5,] 10 NA >>>> #seems like an unreasonable answer to a reasonable question >>>> x[x[,2]==0,] >>> [,1] [,2] >>> [1,] 4 0 >>> [2,] 5 0 >>> [3,] NA NA >>> [4,] NA NA >>> [5,] NA NA >>> [6,] NA NA >>> [7,] NA NA >>>> #this is more what I was expecting >>>> x[which(x[,2]==0),] >>> [,1] [,2] >>> [1,] 4 0 >>> [2,] 5 0 >>> ______________________________________________ >>> 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. > > I wanted to know if this was a bug so that I could report it if so. You say it is not, so you answered my question. As far as me not reading the documentation, I challenge anyone to read the cited help pages and predict the observed behavior based on the information given in those pages. > > ______________________________________________ > 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.-- Peter Dalgaard, Professor, Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Office: A 4.23 Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com