Have you tried is.integer(7.0) in S-Plus? (I have) Do you think 7.0 is integer?
IMHO in R there is nothing to be fixed (in this regard) except your understanding. This is a computer language, not English; intuition isn't reliable, so we have help pages. is.integer(x) is not intended to indicate whether the value of x is a whole number, it indicates whether x has class "integer". All objects of class "integer" have whole number values, but not all objects with whole number values have class "integer". If you want to know whether a value is a whole number you could try (but there may be a better way, and beware of computer precision) x == as.integer(x) If you want a value to be stored in an object of class "integer" you'd better say so (using as.integer or L or ...), else how is R to know what you want? As Martin has pointed out, the system could "guess" based on the presence or absence of a decimal point; I share his opinion that this would be a "bad thing". Nuff said. Keith J <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Thank you for all of you. Intuitively, 7 is an integer for people who > live in this planet. It is just very difficult for me to believe that R > does not think 7 is an integer but 7L is. >> is.integer(7) # R 2.7.2 > [1] FALSE > Thus, based on Martin's comments, I try it again on the S-PLUS 8.0 and it > shows >> is.integer(7) # S-PLUS 8.0 > [1] T > > Hopefully, someday and someone will fix it therefore, R users don't need > to use as.integer(7) to tell R that 7 is an integer. > > Thanks again > Chunhao > > > Quoting Martin Maechler <[EMAIL PROTECTED]>: > >>>>>>> "KJ" == Keith Jewell <[EMAIL PROTECTED]> >>>>>>> on Wed, 24 Sep 2008 09:46:08 +0100 writes: >> >> KJ> "7" is an integer, but it's also a real. >> KJ> In R '?is' and '?is.integer' are clear that you're testing the >> class(es) of >> KJ> objects, not their values. >> KJ> I can't comment on the relationship with "S Programming" >> >> I can: >> >> In S, and S-plus upto version 3.4, >> numeric constants such as '7' where "double" as they are in R. >> >> Then in S-plus 5.1, they became "integer", >> and there were tools so users could change all(!!) their S >> scripts to use '7.' instead of '7' in all places where numeric >> constants were seen, in order to keep behavior back compatible. >> >> R never made such a step (backwards ;-), and never will, >> notably since in R we had introduced the explicit long (= long >> integer) constants, using the 'L' suffix, >> i.e., 7L is "integer" >> 7 is "double" >> >> Note however that for both, is.numeric(.) is fulfilled and >> class(.) and mode(.) return "numeric". >> Only typeof(.), storage.mode(.) or str(.) >> (or functions building on these) tell you the difference. >> >> Martin Maechler, ETH Zurich and R core team >> >> [And, yes, if you think further and are wondering: >> If we'd design things from scratch, we would only have S4 >> classes and "double" would be a proper class and >> "numeric" would be the class union of {"integer", "double"} >> ] >> >> >> KJ> <[EMAIL PROTECTED]> wrote in message >> KJ> news:[EMAIL PROTECTED] >> >> This is really bothering me! In the Dr. Venables and Dr. >> Ripley's book "S >> >> Programming" Page 105 >> >> shows that >> >>> c(is(10,"integer"),is(10.5,"integer")) >> >> [1] T F >> >> >> >> But I try this in R 2.7.2 it shows >> >>> c(is(10,"integer"),is(10.5,"integer")) >> >> [1] FALSE FALSE >> >> Does anyone know what is going on here? >> >> >> >> Appreciate, >> >> Chunhao >> >> >> >> Quoting Yihui Xie <[EMAIL PROTECTED]>: >> >> >> >>> Yes, everyone will agree "7" is an integer, but I don't think >> >>> computers will agree too :-) R thinks it's a double-precision >> number, >> >>> except when you explicitly specify it as an integer (say, >> >>> as.integer()). >> >>> >> >>>> class(7) >> >>> [1] "numeric" >> >>> >> >>>> is.double(7) >> >>> [1] TRUE >> >>> >> >>> Regards, >> >>> Yihui >> >>> -- >> >>> Yihui Xie <[EMAIL PROTECTED]> >> >>> Phone: +86-(0)10-82509086 Fax: +86-(0)10-82509086 >> >>> Mobile: +86-15810805877 >> >>> Homepage: http://www.yihui.name >> >>> School of Statistics, Room 1037, Mingde Main Building, >> >>> Renmin University of China, Beijing, 100872, China >> >>> >> >>> >> >>> >> >>> On Wed, Sep 24, 2008 at 12:40 PM, <[EMAIL PROTECTED]> wrote: >> >>>> Hi R users >> >>>> Is there anything wrong in "is" function? (R 2.7.2) >> >>>> I believe that everyone will agree that "7" is an integer, >> right? but >> >>>> why R >> >>>> shows 7 is not an integer >> >>>> >> >>>>> is.integer(7) >> >>>> >> >>>> [1] FALSE >> >>>>> >> >>>>> is(7,"integer") >> >>>> >> >>>> [1] FALSE >> >>>>> >> >>>>> is(as.integer(7), "integer") >> >>>> >> >>>> [1] TRUE >> >>>> >> >>>> Thank you very much in advance >> >>>> Chunhao >> >> KJ> ______________________________________________ >> KJ> R-help@r-project.org mailing list >> KJ> https://stat.ethz.ch/mailman/listinfo/r-help >> KJ> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html >> KJ> and provide commented, minimal, self-contained, reproducible >> code. >> >> ______________________________________________ >> R-help@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. >> > > ______________________________________________ > R-help@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. > ______________________________________________ R-help@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.