R-beta: Re: "as.numeric" `mode' and `cast' should be kept separate.
Ross Ihaka
ihaka at stat.auckland.ac.nz
Wed Jun 3 03:18:04 CEST 1998
Bill Venables writes:
> I don't say this will appeal to everyone straight away, but I
> would even favour using a binary operator syntax for the
> assignment function form of the above replacement function, for
> example
>
> "%cast.as%" <- function(x, form) {
> storage.mode(x) <- deparse(substitute(form))
> x
> }
>
> Calls to .C would then take on such a striking form that it would
> be immediately noticed if something had been missed:
>
> result <- .C("some_flashy_C_thing",
> x = my.x %cast.as% double,
> i = my.eye %cast.as% integer,
> oops = forgot.this.one,
> value = z %cast.as% single)$value
>
> Nothing to do with mode. If "%cast.as%" is too much typing, well
> it's not too difficult to redefine your own shorter version:
>
> "%as%" <- get("%cast.as%")
This certainly appeals to me straight away! A very nice suggestion.
> -----------------------------------------------------------------
>
> There is a semi-related but much larger issue that also deserves
> to be fully regularised: which classes of functions strip off
> attributes and which retain them in the result, and if there is a
> conflict, how is it resolved? (storage.mode<- guarantees
> attributes will be retained; as.numeric guarantees they won't.)
>
> In S it seems very illogical to me that if M is a matrix, then
> sqrt(M) is a matrix like M in all respects but with square-root
> entries but pnorm(M) is a naked vector of probabilities.
>
> This is a very large issue, but one that really does deserve to
> be handled in a rigorously consistent and well docuented way. S
> and S-PLUS are a long way from that and getting further all the
> time. Perhaps R can still be nudged back onto a better track.
I'm certainly not claiming consistency, but in R, most builtin
functions try to retain (at least some) attributes. E.g.
> x <- matrix(1:4,nc=2)
> pchisq(x,2)
[,1] [,2]
[1,] 0.3934693 0.7768698
[2,] 0.6321206 0.8646647
> pchisq(2,x)
[,1] [,2]
[1,] 0.8427008 0.4275933
[2,] 0.6321206 0.2642411
Handling this in general is hard though.
Ross
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list