[R] Concepts question: environment, frame, search path
Prof Brian Ripley
ripley at stats.ox.ac.uk
Tue May 1 17:34:23 CEST 2007
On Tue, 1 May 2007, Duncan Murdoch wrote:
> On 01/05/2007 12:29 AM, Graham Wideman wrote:
>> I'd appreciate if someone could straighten me out on a few concepts which
>> are described a bit ambiguously in the docs.
>> 1. data.frame:
>> Refan p84: 'A data frame is a list of variables of the same length with
>> unique row names, given class "data.frame".'
>> I probably don't need to point out how opaque that is!
> Which manual are you looking at? The "reference index" (refman.pdf)? It
> doesn't usually include statements like that; they are usually found in
> the Introduction to R (R-intro.pdf) or the R Language Definition
> (R-lang.pdf). But since the refman is just a collection of man pages,
> it might be in there somewhere. And since the manuals do get updated,
> that statement may not be present in the current release. (I did a
> quick search of the source, and couldn't spot it, but my search might
> have failed because of line breaks, strange formatting, or looking in
> the wrong place.)
> By the way, it's generally best to cite the section name where you found
> a quote, because the pagination varies from system to system. Even
> better would be to give a URL to the online HTML version at
> For future reference, if you are suggesting a change, it's best to cite
> the line number in the source at
> https://svn.r-project.org/R/trunk/doc/manual in the *.texi files or
> https://svn.r-project.org/R/trunk/src/library/*/man/*.Rd for man pages,
> and send such suggestions to the R-devel list.
>> Anyhow, key question: Some places in the docs seem pretty firm that a
>> data.frame is basically a 2-D array with:
>> a) named rows and
>> b) columns whose items within a column be of uniform data type.
>> Elsewhere, it seems like a data.frame can be a collection of arbitrary
> The former interpretation is correct. Since the variables all have the
> same length, things like df[i, j] make sense: they choose the i'th
> entry from the j'th variable (according to the "refan" definition), or
> the i'th row, j'th column (according to the 2-D array interpretation.
>> 2. environment
>> Refman p122: "Environments consist of a frame, or collection of named
>> objects, and a pointer to an enclosing environment."
>> Is the "or" here explaining parenthetically that a frame is a collection of
>> named objects, or is separating too alternative structures for an
> The former.
>> If the former, does this imply that a frame can contain arbitrary variables?
> Yes, but a frame isn't an R object, it's a concept that appears in
> descriptions, e.g. part of an environment, or the local variables
> created during function evaluation, etc.
>> And "pointer"? Is that a type of thing in R?
> No, there are no pointers in R. There are a couple of tricks to fake
> them (e.g. environment objects aren't copied when assigned, you just get
> a new reference to the same environment; this allows you to construct
> something like a pointer by wrapping an object in an environment), but I
> don't recommend using these routinely.
Nevertheless, the statement is true. R is implemented using pointers.
>> 3. R search path; attach()
>> The R search path appears to hold the list of "collections of data" (my
>> term) that can be accessed by a users' commands. Refman p27 tells that
>> search path can hold items that are data.frame, list, environment or R data
>> file (on disk). Yet R-intro p28 describes attach() as taking a "directory
>> name" argument. What is the concept "directory" in this context?
> I haven't read the preceding pages carefully, but that looks like an
> error. The usual argument to attach is a package name, and what gets
> attached is an environment holding the exports from the package.
> Packages are stored in directories in the file system, so maybe that's
> what the author of that line had in mind.
For the record, it is old S terminology: that document was converted from
notes for S. What S(-PLUS) now calls 'chapters' it used to call
Also for the record, these documents do not have page numbers: their
layout depends on the version of R, paper size and the tools used to
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-help