[R] Funny warning message
wvenable at arcola.stats.adelaide.edu.au
Wed Apr 7 14:19:06 CEST 1999
>>>>> "John" == John Logsdon <j.logsdon at lancaster.ac.uk> writes:
John> So, as an entry to the wish-list, since R handles it
John> correctly, wouldn't it be better to suppress the
John> warning message - via an option statement. After all
John> t() is clearly different to t[ ] or t so the context
John> should be able to determine what is really wanted.
As it was doing, of course. All you were getting was a warning
message, which to my mind is not a bad idea. If you did use t
for a function name (and if you use it as a variable name, why
not a function?) you would probably find that some vital system
function was suddenly and mysteriously broken.
John> As a second entry to the wish-list, would it be
John> possible to set an option that ensured vector lengths
John> were strictly matched? I find that whenever I drop a
John> booboo and have mismatched vector length, the warning
(`drop' a booboo? I think the thing to avoid is making one in
the first place... :-)
John> message indicates that I have indeed done something
John> wrong. At the moment, I can't conceive of a situation
John> when an operation on two vectors where one is not the
John> same length as the other *or* one is effectively a
John> scalar (vector length 1) can be a legal statement.
John> Maybe some library functions do assume this, in which
John> case the user (or function) could store the option an
John> switch it off during the body.
John> Perhaps options(vector.match=TRUE)?
There are many situations where quite sensible programming does
make use of the recycling rule to good advantage, but I agree
that there are few (if any) cases where you need it when the
lengths are not strictly proportional. For example consider a
calculation like finding a correlation matrix (if there were not
a built-in function to do it, I know):
V <- var(X)
SD <- sqrt(diag(V))
R <- t(V/SD)/SD
Compare the last step with the operations and memory use in
R <- diag(1/SD) %*% V %*% diag(1/SD)
a style many people do adopt. Of course if V is very large,
transpostion is not a trivial operation, either.
John> Since I don't use S+, I don't know what they do but S+
John> is not the oracle anyway.
The latest version of S (version 4) outlaws vector arithmetic
with vectors of non-proportional sizes.
I think S (if not S+) is a bit of an oracle, too, by the way, and
going against the fundamental design is something that should be
done with great caution. There is a lot of occluded wisdom in S.
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