From: Patrick Burns <pburns_at_pburns.seanet.com>

Date: Sat 26 Aug 2006 - 18:57:17 EST

R-help@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. Received on Sat Aug 26 19:03:49 2006

Date: Sat 26 Aug 2006 - 18:57:17 EST

> sub.m <- lapply(m, function(x)x[x>2])
> sub.m

[[1]]

[1] 3 4

[[2]]

[1] 4 5

[[3]]

[1] 4

> sub.m[unlist(lapply(sub.m, function(x) length(x) == 2))]
[[1]]

[1] 3 4

> sub4.m <- lapply(m, function(x)x[x>4])
> sub4.m[unlist(lapply(sub4.m, function(x) length(x) > 0))]
[[1]]

[1] 5

Patrick Burns

patrick@burns-stat.com

+44 (0)20 8525 0696

http://www.burns-stat.com

(home of S Poetry and "A Guide for the Unwilling S User")

xpRt.wannabe wrote:

>Yet another question:

*>
**>Let's say I do the following:
**>
**>set.seed(123)
**>tmpf <- function(){
**>x <- rpois(rpois(1,4),2)
**>}
**>n <- 3
**>m <- replicate(n, tmpf())
**>m
**>sub.m <- lapply(m, function(x)x[x>2])
**>
**>'sub.m' gives me:
**>
**>[[1]]
**>[1] 3 4
**>
**>[[2]]
**>[1] 4 5
**>
**>[[3]]
**>[1] 4
**>
**>The question is: What do I need to do such that I can extract
**>componets of length 2 in 'sub.m' into another sublist, which would
**>look like this:
**>
**>[[1]]
**>[1] 3 4
**>
**>[[2]]
**>[1] 4 5
**>
**>I think that's all the questions I can think of -- for now.
**>
**>Many, many thanks!!!
**>
**>On 8/25/06, xpRt. wannabe <xprt.wannabe@gmail.com> wrote:
**>
**>
**>>Jim and Patrick,
**>>
**>>Both of you made the same suggestion, which works great!
**>>
**>>A follow-up question: Suppose I change the condition 'x>2' in 'lapply'
**>>to 'x>4', as follows:
**>>
**>>set.seed(123)
**>>tmpf <- function() {
**>>x <- rpois(rpois(1,4),2)
**>>}
**>>n <- 3
**>>m <- replicate(n,tmpf())
**>>m
**>>sub.m <- lapply(m, function(x)x[x>4]) # was x>2
**>>
**>>As a result, I'd get:
**>>
**>>
**>>
**>>>sub.m
**>>>
**>>>
**>>[[1]]
**>>numeric(0)
**>>
**>>[[2]]
**>>[1] 5
**>>
**>>[[3]]
**>>numeric(0)
**>>
**>>However, what would I need to do such that 'sub.m' contains only the
**>>non-zero length component; namely, the 'sub.m[[2]]'? In essence, I'd
**>>like to drop all the components of zero length such that 'sub.m'
**>>results in:
**>>
**>>[[1]]
**>>[1] 5
**>>
**>>My best effort was to use 'lapply' again:
**>>
**>>lapply(sub.m, function(x)x[length(x)>0])
**>>
**>>which still gives me:
**>>
**>>[[1]]
**>>numeric(0)
**>>
**>>[[2]]
**>>[1] 5
**>>
**>>[[3]]
**>>numeric(0)
**>>
**>>Again, any help would be greately appreciated.
**>>
**>>p.s. Sorry to bug you again. I should have thought through a little
**>>more prior to composing an example that would represent all possible
**>>scenarios.
**>>
**>>On 8/25/06, jim holtman <jholtman@gmail.com> wrote:
**>>
**>>
**>>>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@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@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?
**>>>
**>>>
**>>>
**>
**>______________________________________________
**>R-help@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.
**>
**>
**>
**>
*

R-help@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. Received on Sat Aug 26 19:03:49 2006

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.1.8, at Sun 27 Aug 2006 - 10:22:36 EST.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*