Description Usage Arguments Details Value See Also Examples
These functions coerce lists and data frame objects to data lists and vice versa.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | as.data.list(x, ...)
is.data.list(x)
is.4th.corner(x)
data.list.mold(x)
## Default S3 method:
as.data.list(x, dimids, match.dimids,
check = TRUE, drop = TRUE,...)
## S3 method for class 'data.list'
as.data.frame(x, row.names = NULL,
optional = FALSE, scheme = "repeat", mold, ...)
## S3 method for class 'data.list'
as.matrix(x, ...)
## S3 method for class 'data.list'
as.list(x, drop.attr = TRUE,
factorsTOstrings = FALSE, ...)
|
x |
An object. Either a data.list, data.frame, or list. |
mold |
A list typically obtained as output from |
dimids |
See |
match.dimids |
See |
check |
See |
drop |
If TRUE, single dimension data lists are coerced to data frames (i.e. their replication dimensions are 'dropped'). |
row.names |
Passed to the default method after some processing. |
optional |
Passed to the default method after some processing. |
scheme |
Type of coercion. Currently, only "repeat" is allowed but others may follow. |
drop.attr |
Should the attributes of the data list be dropped? |
factorsTOstrings |
Should factors be converted to character strings? |
... |
Additional arguments (passed to the default method in |
Ultimately, all functions that create data.list
objects (i.e. data.list
; dlcast
; read.multitable
; variable
; variableGroup
) are wrappers for as.data.list
. From a practical perspective the as.data.list
function is very similar to data.list
, with the following principal differences:
The as.data.list
function requires that multiple objects be organised in a list
(x
) whereas data.list
uses a ...
argument.
Like data.frame
, data.list
automatically names variables as character
versions of the names passed to ...
, whereas variables must be named explicitly with as.data.list
.
The is.data.list
function tests if an object inherits from class data.list
.
The is.4th.corner
function tests if an object is both a data list and has all the properties of a data set with a fourth corner problem.
By default, as.data.frame.data.list
works in two steps. First, a mold
of the coercion process is created with data.list.mold
. The mold
is a list of vectors, each with length
equal to the number of rows in the coerced data frame. Each vector is associated with a particular variable in x
and contains indices that point to the elements of that variable. Second, the mold
is 'filled with' (i.e. used to subscript) x
thereby producing the coerced data frame.
If data lists are to be iteratively coerced to data frames (e.g. repeated random subscripting and coercion), then speed can be enhanced by creating a mold
explicitly with data.list.mold
and then passing it to as.data.frame.data.list
through the mold
argument. Because the mold
will be the same for any data list of the same 'shape', the mold
only needs to be created once before the iterations thereby eliminating the need to iteratively create the mold
.
The as.matrix
method for data lists returns either a single matrix (if all variables are numeric or all variables are either factors or character); otherwise, two matrices are returned, one with the numeric and one with the factor variables respectively. The matrices are returned by first coercing to data frames and then to matrices. This method was created as a result of a suggestion by Philip Dixon.
The as.list.data.list
function is equivalent to unclass
if drop.attr = FALSE
, otherwise (i.e. drop.attr = TRUE
) the "match.dimids"
, "bm"
, and "repdim"
attributes are dropped from x
and the "subsetdim"
attributes are dropped from each variable in x
.
The coerced object.
as.data.frame
; as.list
; as.matrix
; variablize
; data.list
; dlcast
; read.multitable
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | data(fake.community)
fake.community
## testing for data list
is.data.list(fake.community) # TRUE
is.data.list(fake.community$abundance) # FALSE
is.array(fake.community$abundance) # TRUE
## this example illustrates the main difference between
## \code{data.list} and \code{as.data.list}. compare with
## the similar example in \code{\link{data.list}}. notice
## the naming problems with the latter method.
a1 <- matrix(runif(50), 10, 5)
a2 <- matrix(runif(50), 10, 5)
a3 <- matrix(runif(50), 10, 5)
a <- list(a1, a2, a3)
b <- runif(10)
c <- letters[1:5]
data.list(a, b, c)
as.data.list(list(a, b, c))
## coercing to a data frame with explicit mold creation
fake.mold <- data.list.mold(fake.community)
fake.mold
as.data.frame(fake.community)
as.data.frame(fake.community, mold = fake.mold)
## we can coerce a similar data list faster using this
## \code{fake.mold} object
fc.rnd <- fake.community
fc.rnd$abundance <- fc.rnd$abundance[sample(6), , ]
as.data.frame(fc.rnd,mold = fake.mold)
## unless drop=FALSE, simple data lists are immediately
## coerced into data frames -- simple data don't require
## data lists
x <- runif(10)
as.data.list(x)
as.data.list(x, drop = FALSE)
## different ways to coerce a data list to a list.
## each way can produce slightly different results.
as.list(fake.community)
as.list(fake.community, drop.attr = FALSE)
unclass(fake.community)
lapply(fake.community, I)
is.4th.corner(fake.community) ## FALSE
dl <- dropdl(fake.community[,1,])
is.4th.corner(dl) ## TRUE
is.4th.corner(dl[1:3]) ## FALSE
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.