[R] Problem Subsetting Rows that Have NA's
Bert Gunter
bgunter.4567 at gmail.com
Wed Oct 25 20:27:33 CEST 2017
... 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]]
More information about the R-help
mailing list