On Jun 25, 2011, at 15:24 , David Winsemius wrote:
On Jun 24, 2011, at 6:12 PM, StellathePug wrote:
Hello R Users!
I have a list called "tabs" that I would like to have the same
structure as
my list "eqSystem." The two look like they have the same structure
but they
are different because when I look at their attributes,
class(eqSystem[[1]])
is "call" but class(tabs[[1]]) is "formula". I want to have
class(tabs[[1]])
as a call too.
So what does "call" mean?
An as yet unevaluated function invocation with first as the named
function followed by quoted arguments is a "call":
See the help(call) page:
f <- round
A <- 10.5
(g <- as.call(list(f, quote(A))))
call("mean", quote( c(1,2,3)))
eval( call("mean", quote( c(1,2,3))))
[1] 2
It seems very unlikely that a formula object could be coerced into
a valid call simply by altering its class. To convince us otherwise
you need to provide more information than you have supplied to the
present. The results of str() on these objects might be a first step.
Actually, no. Any unevaluated expression in R is mode "call", unless
atomic or symbol. It will also be class "call", unless expressedly
overridden by an S3 class assignment. Notice that operators are
really function calls.
I.e.
[1] "numeric"
(This is why the R docs keep talking about "unevaluated expressions"
instead of "call objects": They aren't always that.)
The "~" operator is also a function call. However, evaluating "~"
returns an object which is the actual call assigned class
"formula" (plus an environment attribute).
y ~ x
attr(,".Environment")
<environment: R_GlobalEnv>
[1] "call"
I.e., an unevaluated formulae expression (as in quote(y~x)) is class
"call", as is an unclassed formula object. So it is pretty easy to
have objects of class "formula" very similar to objects of class
"call".