Dear Hadley:

Thanks for that. Digits are not numbers. Numbers are not data. Data is not information. Information is not intelligence. Intelligence is not knowledge. Knowledge is not wisdom. And your "is." warnings are more useful than my trivia here.


      Spencer


On 5/9/2014 2:42 PM, Hadley Wickham wrote:
Beware of the is.* functions:

* is.object() does not test the usual definition of objects
* is.vector() does not test the usual definition of vectors
* is.numeric() does not work the same way as is.character() or is.integer()
* is.Date() doesn't exist
* is.nan() doesn't return TRUE for some NaNs

Hadley

On Fri, May 9, 2014 at 4:32 PM, Spencer Graves
<spencer.gra...@structuremonitoring.com> wrote:
Hi, Duncan:


       Thanks very much.  I used to think that everything in R was a object.
Now I know that is.object(quote(x)) is FALSE.  (A decade ago, S-Plus asked
me if I wanted to save changes to history.  I thought, "Wow!  Do I get to
change history?"


       Hadley's "Advanced R" book mentions "Reference classes" in his "OO
field guide".  It includes an example where changing "a" changes a "copy"
previously made:


b <- a
b$balance
#> [1] 200
a$balance <- 0
b$balance
#> [1] 0


       This bothers me far more than an object in R that's not an object ;-)


       Best Wishes,
       Spencer



On 5/9/2014 6:48 AM, Bert Gunter wrote:
Ahhh. Thanks Duncan.

-- Bert

Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374

"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
H. Gilbert Welch




On Fri, May 9, 2014 at 2:41 AM, Duncan Murdoch <murdoch.dun...@gmail.com>
wrote:
On 09/05/2014, 2:41 AM, Bert Gunter wrote:
Spencer:

Hmmm....
Well, I don't get what's going on here -- as.character.default is
internal -- but could you method-ize a simple synonym:

See ?InternalMethods:

"For efficiency, internal dispatch only occurs on objects, that is those
for
which is.object returns true."

Duncan Murdoch


asChar<- function(e,...)UseMethod("asChar")
asChar.call <- function(e,...)deparse(e,...)
asChar.default <- function(e,...)as.character(e,...)

asChar(xDy)
[1] "x$y"

asChar(1:5)
[1] "1" "2" "3" "4" "5"


Cheers,
Bert

Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374

"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
H. Gilbert Welch




On Thu, May 8, 2014 at 8:56 PM, Spencer Graves
<spencer.gra...@structuremonitoring.com> wrote:
On 5/8/2014 8:05 PM, Bert Gunter wrote:

[1] "x$y"

Spencer:

Does

deparse(substitute(x$y))
[1] "x$y"

do what you want?



         No:  The problem is methods dispatch.  class(quote(x$y)) =
'call',
but
as.character(quote(x$y)) does NOT go to "as.character.call".


         deparse(quote(x$y)) returns the answer I want, as Greg Snow
noted
earlier.


         However, it would be easier to remember if I could write
as.character(quote(x$y)) and get the same thing.


         With "as.character.call <- function(x, ...)deparse(x, ...)",
as.character.call(quote(x$y)) returns "x$y", as desired. However, the
methods dispatch one might naively expect fails, as noted above.


         Thanks,
         Spencer

Cheers,
Bert






-- Bert

Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374

"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
H. Gilbert Welch




On Thu, May 8, 2014 at 5:56 PM, Spencer Graves
<spencer.gra...@structuremonitoring.com> wrote:

              "as.character.call" seems not to work as an alias for
deparse.
Consider the following:


xDy <- quote(x$y)
class(xDy)
"call"
as.character.call <- function(x, ...)deparse(x, ...)
as.character(xDy)
[1] "$" "x" "y"
# fails

str(xDy)
#  language x$y
as.character.language <- function(x, ...)"language"

as.character(xDy)
[1] "$" "x" "y"


              Is it feasible to construct a method for "as.character"
that
works
for objects of class "call"?


              Thanks,
              Spencer


#################


Thanks for the quick replies from Richard Heiberger, Greg Show & Bert
Gunter.


          Might it make sense to create as.character.call as an alias
for
deparse?


          A few years ago, I wrote several functions like "predict.fd"
as
aliases for functions with less memorable names like "eval.fd".
Doing
that
made the "fda" package easier to use, at least for me ;-)


          Thanks again,
          Spencer


On 5/7/2014 2:39 PM, Bert Gunter wrote:

... and

str(quote(x$y))

      language x$y

as.list(quote(x$y))

[[1]]
`$`

[[2]]
x

[[3]]
y

## may be instructive.

Cheers,
Bert




Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374

"Data is not information. Information is not knowledge. And
knowledge
is certainly not wisdom."
H. Gilbert Welch




On Wed, May 7, 2014 at 2:30 PM, Greg Snow <538...@gmail.com> wrote:

deparse(quote(x$y))

[1] "x$y"

It looks like deparse does what you want here.

On Wed, May 7, 2014 at 3:23 PM, Spencer Graves
<spencer.gra...@structuremonitoring.com> wrote:

Hello, All:


           Is there a simple utility someplace to convert
"quote(x$y)"
to
"x$y"?


           I ask, because as.character(quote(x$y)) is a character
vector
of
length 3 =  "$" "x" "y".  I want to convert this to "x$y" for a
diagnostic
message.


           class(quote(x$y)) = "call", which suggests I could write
"as.character.call" to perform this function.  However, before I
do,
I
felt
a need to ask for other thoughts on this.


           Thanks,
           Spencer



--
Gregory (Greg) L. Snow Ph.D.
538...@gmail.com


______________________________________________
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.




--
Spencer Graves, PE, PhD
President and Chief Technology Officer
Structure Inspection and Monitoring, Inc.
751 Emerson Ct.
San José, CA 95126
ph:  408-655-4567
web:  www.structuremonitoring.com

______________________________________________
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.

Reply via email to