Is there a less cryptic way to compare three or more values? allTheSame<-c("red","red","red","red") notAllTheSame<-c(132,132,132,999) all.identical <- function(vectorToTest){ cIdentical=sum(vectorToTest %in% vectorToTest[1]) return(cIdentical==length(vectorToTest)) } all.identical(allTheSame) all.identical(notAllTheSame) Thanks in advance, Holly
Holly, try > length(unique(x)) == 1 where x is your vector of interest. But think about how you want NA values to be treated, and also think about R FAQ 7.31 if dealing with floating point numbers. --Erik Beale, Holly (NIH/NHGRI) [F] wrote:> Is there a less cryptic way to compare three or more values? > > allTheSame<-c("red","red","red","red") > notAllTheSame<-c(132,132,132,999) > > all.identical <- function(vectorToTest){ > cIdentical=sum(vectorToTest %in% vectorToTest[1]) > return(cIdentical==length(vectorToTest)) > } > > all.identical(allTheSame) > all.identical(notAllTheSame) > > Thanks in advance, > Holly > > ______________________________________________ > R-help at r-project.org mailing list > 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.
On Mar 23, 2011, at 11:01 AM, Beale, Holly (NIH/NHGRI) [F] wrote:> Is there a less cryptic way to compare three or more values? > > allTheSame<-c("red","red","red","red") > notAllTheSame<-c(132,132,132,999) > > all.identical <- function(vectorToTest){ > cIdentical=sum(vectorToTest %in% vectorToTest[1]) > return(cIdentical==length(vectorToTest)) > } > > all.identical(allTheSame) > all.identical(notAllTheSame) > > Thanks in advance, > HollySee ?unique allTheSame <- c("red","red","red","red") notAllTheSame <- c(132,132,132,999)> length(unique(allTheSame)) == 1[1] TRUE> length(unique(notAllTheSame)) == 1[1] FALSE Note that this is fine for character and integer values, but should not be expected to work for floats. In the latter case, see ?all.equal and R FAQ 7.31: Why doesn't R think these numbers are equal? HTH, Marc Schwartz
Erik: (head smack) Of course! Thank you. On 3/23/11 2:47 PM, "Erik Iverson" <eriki at ccbr.umn.edu> wrote:>Holly, > >try > > > length(unique(x)) == 1 > >where x is your vector of interest. But think about >how you want NA values to be treated, and also think about >R FAQ 7.31 if dealing with floating point numbers. > >--Erik > > >Beale, Holly (NIH/NHGRI) [F] wrote: >> Is there a less cryptic way to compare three or more values? >> >> allTheSame<-c("red","red","red","red") >> notAllTheSame<-c(132,132,132,999) >> >> all.identical <- function(vectorToTest){ >> cIdentical=sum(vectorToTest %in% vectorToTest[1]) >> return(cIdentical==length(vectorToTest)) >> } >> >> all.identical(allTheSame) >> all.identical(notAllTheSame) >> >> Thanks in advance, >> Holly >> >> ______________________________________________ >> R-help at r-project.org mailing list >> 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.