# Why does R do this?

4 messages
Open this post in threaded view
|

## Why does R do this?

 y<-c(1,2,3) z<-which(y>3) z y<-y[-z] y In the work I'm doing I often have this situation and have to make sure that I condition on z being non-zero as y is now numeric(0) rather than the set c(1,2,3).  Why does R do this?  Wouldn't it be more sensible for R to simply leave the host set unchanged if there are no elements to take out? Any thoughts? Thanks, Nick Wray         [[alternative HTML version deleted]] ______________________________________________ [hidden email] mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: Why does R do this?

 Dear Nick, The best solution is not to use which() but directy use the logical test. This will work in case the condition is always FALSE and which() returns a integer(0). And it is much faster too. z <- y > 3 y[!z] library(microbenchmark) microbenchmark(   y[!y > 3],   y[-which(y > 3)] ) Best regards, ir. Thierry Onkelinx Statisticus / Statistician Vlaamse Overheid / Government of Flanders INSTITUUT VOOR NATUUR- EN BOSONDERZOEK / RESEARCH INSTITUTE FOR NATURE AND FOREST Team Biometrie & Kwaliteitszorg / Team Biometrics & Quality Assurance [hidden email] Havenlaan 88 bus 73, 1000 Brussel www.inbo.be /////////////////////////////////////////////////////////////////////////////////////////// To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher The plural of anecdote is not data. ~ Roger Brinner The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data. ~ John Tukey /////////////////////////////////////////////////////////////////////////////////////////// Op di 8 jan. 2019 om 10:29 schreef Nick Wray via R-help < [hidden email]>: > y<-c(1,2,3) > z<-which(y>3) > z > y<-y[-z] > y > > In the work I'm doing I often have this situation and have to make sure > that I condition on z being non-zero as y is now numeric(0) rather than the > set c(1,2,3).  Why does R do this?  Wouldn't it be more sensible for R to > simply leave the host set unchanged if there are no elements to take out? > > Any thoughts? > > Thanks, Nick Wray >         [[alternative HTML version deleted]] > > ______________________________________________ > [hidden email] 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]] ______________________________________________ [hidden email] mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.