[R] How to iteratively extract elements out of a list

jim holtman jholtman at gmail.com
Fri Aug 25 23:26:38 CEST 2006


try this:

> set.seed(123)
> tmpf <- function() {
+ x <- rpois(rpois(1,4),2)
+ }
> n <- 3
> m <- replicate(n,tmpf())
> m
[[1]]
[1] 3 2 4

[[2]]
[1] 0 2 4 2 2 5 2

[[3]]
[1] 2 0 4 1 0

> lapply(m, function(x)x[x>2])
[[1]]
[1] 3 4

[[2]]
[1] 4 5

[[3]]
[1] 4

>

On 8/25/06, xpRt.wannabe <xprt.wannabe at gmail.com> wrote:
> Dear List,
>
> The following code produces a list, which is what I what:
>
> set.seed(123)
> tmpf <- function() {
> x <- rpois(rpois(1,4),2)
> }
> n <- 3
> m <- replicate(n,tmpf())
> m
>
> [[1]]
> [1] 3 2 4
>
> [[2]]
> [1] 0 2 4 2 2 5 2
>
> [[3]]
> [1] 2 0 4 1 0
>
>
> Now I need something that would to extract iteratively (or as many
> times as
> the size of 'n') the values that are greater than 2 in each component
> of
> 'm' into another list such that the sub-list would be:
>
> [[1]]
> [1] 3 4
>
> [[2]]
> [1] 4 5
>
> [[3]]
> [1] 4
>
> Below is what I tried:
>
> for(i in 1:3)
> sub.list <- lapply(m,subset,m[[i]]>2)
>
> > sub.list
>
> which gives me something different from what I want:
>
> [[1]]
> [1] 4
>
> [[2]]
> [1] 4
>
> [[3]]
> [1] 4
>
> Any help would be appreciated.
>
> > version
>         _
> platform i386-pc-mingw32
> arch     i386
> os       mingw32
> system   i386, mingw32
> status
> major    2
> minor    2.1
> year     2005
> month    12
> day      20
> svn rev  36812
> language R
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>


-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem you are trying to solve?



More information about the R-help mailing list