[R] Subsetting a list
Prof Brian Ripley
ripley at stats.ox.ac.uk
Fri Oct 21 14:55:41 CEST 2005
On Fri, 21 Oct 2005, Martin Maechler wrote:
>>>>>> "PaCo" == Patrick Connolly <p.connolly at hortresearch.co.nz>
>>>>>> on Fri, 21 Oct 2005 13:26:08 +1300 writes:
>
> PaCo> On Wed, 19-Oct-2005 at 05:09PM +0200, Martin Maechler wrote:
> PaCo> |> Lists can have 'dim' attributes and hence be treated as arrays;
> PaCo> |> Note that this is pretty rarely used and not too well supported
> PaCo> |> by some tools, one could say even 'print()' :
> PaCo> |>
> PaCo> |> > set.seed(0); L0 <- L <- lapply(rpois(12, lambda=3), seq); dim(L) <- 3:4; L
> PaCo> |> [,1] [,2] [,3] [,4]
> PaCo> |> [1,] Integer,5 Integer,3 Integer,5 Integer,3
> PaCo> |> [2,] Integer,2 Integer,5 Integer,6 1
> PaCo> |> [3,] Integer,2 Integer,2 Integer,4 Integer,2
>
> PaCo> for an occasion such as this, it can be clearer to do:
>
> >> transform(L)
> PaCo> X1 X2 X3 X4
> PaCo> 1 1, 2, 3, 4, 5 1, 2, 3 1, 2, 3, 4, 5 1, 2, 3
> PaCo> 2 1, 2 1, 2, 3, 4, 5 1, 2, 3, 4, 5, 6 1
> PaCo> 3 1, 2 1, 2 1, 2, 3, 4 1, 2
>
> wow!
> Thank you Patrick!
>
> Actually, that's identical to
>
> data.frame(L)
>
> which I honestly wouldn't have had expected to work for L.
or even as.data.frame(L).
Now replace lambda=3 by lambda=30 and see which one is legible (let alone
clearer). I prefer the internal matrix printing in almost all cases.
It works for data frames because print.data.frame uses format.data.frame
which uses format, and that's how format works on a list.
--
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
mailing list