---
name: "Statistics::R::REXP::Environment"
section: "3pm"
platform: "linux"
package: "libstatistics-r-io-perl"
version: "1.0002-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Statistics::R::REXP::Environment"
---

# Statistics::R::REXP::Environment(3pm)

an R environment

## NAME

Statistics::R::REXP::Environment - an R environment

## VERSION

version 1.0002

## SYNOPSIS

```
    use Statistics::R::REXP::Environment

    my $env = Statistics::R::REXP::Environment->new({
        x => Statistics::R::REXP::Character->new(['foo', 'bar']),
        b => Statistics::R::REXP::Double->new([1, 2, 3]),
    });
    print $env->elements;
```

## DESCRIPTION

An object of this class represents an R environment (`"ENVSXP"`). Environments in R consist of a *frame*, a set of symbol-value pairs, and an *enclosure*, a pointer to an enclosing (also called "parent") environment. Environments form a tree structure, with a special *emptyenv* environment at the root, which has no parent.

These objects represent calls (such as model formulae), with first element a reference to the function being called, and the remainder the actual arguments of the call. Names of arguments, if given, are recorded in the 'names' attribute (itself as Statistics::R::REXP::Character vector), with unnamed arguments having name `''`. If no arguments were named, the environment objects will not have a defined 'names' attribute.

You shouldn't create instances of this class, it exists mainly to handle deserialization of `"ENVSXP"`s by the `"IO"` classes.

## METHODS

`"Statistics::R::REXP:Environment"` inherits from Statistics::R::REXP::Vector, with the added restriction that its first element has to be a Statistics::R::REXP::Symbol or another `"Environment"` instance. Trying to create a Environment instance that doesn't follow this restriction will raise an exception.

### ACCESSORS

- frame

  Returns a reference to the hash of symbol-value pairs representing the environment's frame, i.e., the variable with bound values in the environment.

- enclosure

  Returns a reference to the parent Environment, if it is defined.

- name

  Environments can be named, although this is not normally settable from R code. Typically, only the system environments (such as namespaces), and environments created by `"attach"`-ing an object, have a name.

- sexptype

  SEXPTYPE of environments is `"ENVSXP"`.

- to\_pl

  Environments do not have a native Perl representation and trying to call this access will raise an exception.

## BUGS AND LIMITATIONS

Classes in the `"REXP"` hierarchy are intended to be immutable. Please do not try to change their value or attributes.

There are no known bugs in this module. Please see Statistics::R::IO for bug reporting.

## SUPPORT

See Statistics::R::IO for support and contact information.

## AUTHOR

Davor Cubranic \<cubranic@stat.ubc.ca\>

## COPYRIGHT AND LICENSE

This software is Copyright (c) 2017 by University of British Columbia.

This is free software, licensed under:

```
  The GNU General Public License, Version 3, June 2007
```
