NAME

Rserve::REXP::List - an R generic vector (list)

SYNOPSIS

use Rserve::REXP::List

my $vec = Rserve::REXP::List->new([
    1, '', 'foo', ['x', 22]
]);
print $vec->elements;

DESCRIPTION

An object of this class represents an R list, also called a generic vector (VECSXP). List elements can themselves be lists, and so can form a tree structure.

METHODS

Rserve::REXP:List inherits from Rserve::REXP::Vector, with no added restrictions on the value of its elements. Missing values (NA in R) have value undef.

sexptype

SEXPTYPE of generic vectors is VECSXP.

to_perl

Perl value of the list is an array reference to the Perl values of its elements, but using a scalar value to represent elements that are atomic vectors of length 1, rather than a one-element array reference.

The idea is that in R, 1:3, and list(1, 2, 3) can often be used interchangeably, even though the list is really composed of three integer vectors, each of length one. Now, both will have native Perl representation of [1, 2, 3].

This only applies to elements that are atomic vectors. An element of type list will always be represented as an array reference. For example,

list(list(1), list(2), list(3))->to_perl will be represented as [ [ 1 ], [ 2 ], [ 3 ] ]