subListExtract: Extract the same element from the sublists of a list

Description Usage Arguments Details Value Author(s) Examples

View source: R/tools.R

Description

Given a list of lists, this function can be used to extract a named element from each sublist.

Usage

1
subListExtract(L, name, simplify = FALSE, keep.names = TRUE)

Arguments

L

A list of named lists

name

The name of the element in the sublists that should be extracted. This should be a length one character vector.

simplify

When TRUE, the return value will be an atomic vector. If any extracted sublist value has length not equal to one and simplify=TRUE, an error will be raised. When FALSE, a list is returned containing the extracted elements.

keep.names

If TRUE (default), the names of L will be attached to the returned vector.

Details

This function is implemented in C and is intended to be faster than calling lapply or sapply.

Value

If simplify=FALSE, a list will be returned having the same length as L, but with each element containing the element named name from the corresponding inner list of L.

When simplify=TRUE, an atomic vector will be returned containing the extracted elements. If any of the inner list elements do not have length one or cannot be put inside an atomic vector, an error will be raised.

Author(s)

Seth Falcon

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
list_size = 500000
innerL = list(foo="foo", bar="bar")
L = rep(list(innerL), list_size)

system.time({j0 = sapply(L, function(x) x$foo)})
system.time({j1 = subListExtract(L, "foo", simplify=TRUE)})
stopifnot(all.equal(j0, j1))

LS = L[1:3]
names(LS) = LETTERS[1:3]
subListExtract(LS, "bar", simplify=TRUE)
subListExtract(LS, "bar", simplify=FALSE)
subListExtract(LS, "bar", simplify=TRUE, keep.names=FALSE)

Example output

Loading required package: BiocGenerics
Loading required package: parallel

Attaching package: 'BiocGenerics'

The following objects are masked from 'package:parallel':

    clusterApply, clusterApplyLB, clusterCall, clusterEvalQ,
    clusterExport, clusterMap, parApply, parCapply, parLapply,
    parLapplyLB, parRapply, parSapply, parSapplyLB

The following objects are masked from 'package:stats':

    IQR, mad, sd, var, xtabs

The following objects are masked from 'package:base':

    Filter, Find, Map, Position, Reduce, anyDuplicated, append,
    as.data.frame, basename, cbind, colMeans, colSums, colnames,
    dirname, do.call, duplicated, eval, evalq, get, grep, grepl,
    intersect, is.unsorted, lapply, lengths, mapply, match, mget,
    order, paste, pmax, pmax.int, pmin, pmin.int, rank, rbind,
    rowMeans, rowSums, rownames, sapply, setdiff, sort, table, tapply,
    union, unique, unsplit, which, which.max, which.min

Welcome to Bioconductor

    Vignettes contain introductory material; view with
    'browseVignettes()'. To cite Bioconductor, see
    'citation("Biobase")', and for packages 'citation("pkgname")'.

   user  system elapsed 
  0.398   0.008   0.408 
   user  system elapsed 
  0.014   0.003   0.019 
    A     B     C 
"bar" "bar" "bar" 
$A
[1] "bar"

$B
[1] "bar"

$C
[1] "bar"

[1] "bar" "bar" "bar"

Biobase documentation built on Nov. 8, 2020, 6:52 p.m.