Hi Phillips, Maybe these examples will be useful:
> vec <- c("a","b","c","d","e") > vec[c(1,1,1,0,0)] [1] "a" "a" "a" > vec[c(1,1,1,2,2)] [1] "a" "a" "a" "b" "b" > vec[c(5,5,5,5,5)] [1] "e" "e" "e" "e" "e" > vec[c(NA,NA,NA,0,0,0,0)] [1] NA NA NA > vec[c(NA,NA,NA,1,1,1,1)] [1] NA NA NA "a" "a" "a" "a" > vec[c(7:9)] [1] NA NA NA > > R.version.string [1] "R version 3.6.3 (2020-02-29)" HTH, Bill. W. Michels, Ph.D. On Wed, Jun 23, 2021 at 10:39 AM Phillips Rogfield <thebudge...@gmail.com> wrote: > > Dear all, > > thank for for your suggestion. > > Yes I come from languages where 1 means TRUE and 0 means FALSE. In > particular from C/C++ and Python. > > Evidently this is not the case for R. > > In my mind I kind took for granted that that was the case (1=TRUE, 0=FALSE). > > Knowing this is not the case for R makes things simpler. > > Mine was just an example, sometimes I load datasets taken from outside > and variables are coded with 1/0 (for example, a treatment variable may > be coded that way). > > I also did not know the !!() syntax! > > Thank you for your help and best regards. > > On 23/06/2021 17:55, Bert Gunter wrote: > > Just as a way to save a bit of typing, instead of > > > > > as.logical(0:4) > > [1] FALSE TRUE TRUE TRUE TRUE > > > > > !!(0:4) > > [1] FALSE TRUE TRUE TRUE TRUE > > > > DO NOTE that the parentheses in the second expression should never be > > omitted, a possible reason to prefer the as.logical() construction. > > Also note that !! "acts [only] on raw, logical and number-like > > vectors," whereas as.logical() is more general. e.g. (from ?logical): > > > > > charvec <- c("FALSE", "F", "False", "false", "fAlse", "0", > > + "TRUE", "T", "True", "true", "tRue", "1") > > > as.logical(charvec) > > [1] FALSE FALSE FALSE FALSE NA NA TRUE TRUE TRUE TRUE NA > > NA > > > !!charvec > > Error in !charvec : invalid argument type > > > > > > 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, Jun 23, 2021 at 8:31 AM Eric Berger <ericjber...@gmail.com > > <mailto:ericjber...@gmail.com>> wrote: > > > > In my code, instead of 't', I name a vector of indices with a > > meaningful > > name, such as idxV, to make it obvious. > > > > Alternatively, a minor change in your style would be to replace your > > definition of t by > > > > t <- as.logical(c(1,1,1,0,0)) > > > > HTH, > > Eric > > > > > > On Wed, Jun 23, 2021 at 6:11 PM Phillips Rogfield > > <thebudge...@gmail.com <mailto:thebudge...@gmail.com>> > > wrote: > > > > > I make the same mistake all over again. > > > > > > In particular, suppose we have: > > > > > > a = c(1,2,3,4,5) > > > > > > and a variable that equals 1 for the elements I want to select: > > > > > > t = c(1,1,1,0,0) > > > > > > To select the first 3 elements. > > > > > > The problem is that > > > > > > a[t] > > > > > > would repeat the first element 3 times ..... > > > > > > I have to either convert `t` to boolean: > > > > > > a[t==1] > > > > > > Or use `which` > > > > > > a[which(t==1)] > > > > > > How can I "spot" this error? > > > > > > It often happens in long scripts. > > > > > > Do I have to check the type each time? > > > > > > Do you have any suggestions? > > > > > > ______________________________________________ > > > R-help@r-project.org <mailto:R-help@r-project.org> mailing list > > -- To UNSUBSCRIBE and more, see > > > https://stat.ethz.ch/mailman/listinfo/r-help > > <https://stat.ethz.ch/mailman/listinfo/r-help> > > > PLEASE do read the posting guide > > > http://www.R-project.org/posting-guide.html > > <http://www.R-project.org/posting-guide.html> > > > and provide commented, minimal, self-contained, reproducible code. > > > > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help@r-project.org <mailto:R-help@r-project.org> mailing list -- > > To UNSUBSCRIBE and more, see > > https://stat.ethz.ch/mailman/listinfo/r-help > > <https://stat.ethz.ch/mailman/listinfo/r-help> > > PLEASE do read the posting guide > > http://www.R-project.org/posting-guide.html > > <http://www.R-project.org/posting-guide.html> > > and provide commented, minimal, self-contained, reproducible code. > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@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. ______________________________________________ R-help@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.