[R] Sweave and the "[" function
Peter Dalgaard
p.dalgaard at biostat.ku.dk
Tue Sep 5 13:46:06 CEST 2006
Ross Darnell <r.darnell at uq.edu.au> writes:
> Hi Vincent
>
> This would seem logical but in this case doesn't work.
> It doesn't seem to be a Sweave problem (feature) at all but within R as
> Hadley stated.
> Within R try
>
> > quote(women[1])
> women[1]
>
> now try
>
> > quote("["(women,1))
> women[1]
>
> So it's parsed and "normalised" (there's a familiar term); in this case
> to women[1] before its quoted.
>
> Curiously in the "R Language Definition Guide" in 10.4.3 it states
>
> R has three indexing constructs, two of which are syntactically similar
> although with somewhat
> different semantics:
> object [ arg1, ...... , argn ]
> object [[ arg1, ...... , argn ]]
> The object can formally be any valid expression, but it is understood to
> denote or evaluate
> to a subsettable object. The arguments generally evaluate to numerical
> or character indices,
> but other kinds of arguments are possible (notably drop = FALSE).
> Internally, these index constructs are stored as function calls with
> function name "[" respectively
> "[[".
Clear enough to me, but then again, I probably wrote it... 5 years ago
or so.
> So I'm lost now. Can some one hand me a map and compass?
Er, maybe, if you tell us which woods you are lost in so that we can
find you...
What may be confusing you is that it is precisely the other way
around: women[1] is parsed to "["(women,1) which deparses to women[1].
This may be illuminating:
for(i in 1:3) print(quote(foo(women,1))[[i]])
for(i in 1:3) print(quote("["(women,1))[[i]])
for(i in 1:3) print(quote(women[i])[[i]])
--
O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-help
mailing list