[R] Extracting elements from a list

2007-07-14 Thread Forest Floor
Hi,

I would love an easy way to extract elements from a list.  

For example, if I want the first element from each of 10 arrays stored 
in a list,  

Lst[[1:10]][1,1]  seems like a logical approach, but gives this error:  
Error: recursive indexing failed at level 3

The following workaround is functional but can get annoying/confusing.  

first.element=vector()
for (i in 1:10){ first.element=c(first.element, Lst[[i]][1,1])  }

Is there a better way to do this?   Thanks for any help!

Jeff

__
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.


Re: [R] Extracting elements from a list

2007-07-14 Thread Adaikalavan Ramasamy
Try

  sapply( Lst, function(m) m[1,1] )

Also note that to subset a list, you just need Lst[ 1:10 ] and not
Lst[[ 1:10 ]] (note the double square brackets).

Regards, Adai


Forest Floor wrote:
 Hi,
 
 I would love an easy way to extract elements from a list.  
 
 For example, if I want the first element from each of 10 arrays stored 
 in a list,  
 
 Lst[[1:10]][1,1]  seems like a logical approach, but gives this error:  
 Error: recursive indexing failed at level 3
 
 The following workaround is functional but can get annoying/confusing.  
 
 first.element=vector()
 for (i in 1:10){ first.element=c(first.element, Lst[[i]][1,1])  }
 
 Is there a better way to do this?   Thanks for any help!
 
 Jeff
 
 __
 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.


Re: [R] Extracting elements from a list

2007-07-14 Thread Gabor Grothendieck
Use lapply or sapply:

 L - list(a = 1:4, b = 11:15)
 lapply(L, [[, 1)
$a
[1] 1

$b
[1] 11

 sapply(L, [[, 1)
 a  b
 1 11

Also please see last line on every r-help message regarding providing
reproducible code.  Lst was not defined in your post.


On 7/14/07, Forest Floor [EMAIL PROTECTED] wrote:
 Hi,

 I would love an easy way to extract elements from a list.

 For example, if I want the first element from each of 10 arrays stored
 in a list,

 Lst[[1:10]][1,1]  seems like a logical approach, but gives this error:
 Error: recursive indexing failed at level 3

 The following workaround is functional but can get annoying/confusing.

 first.element=vector()
 for (i in 1:10){ first.element=c(first.element, Lst[[i]][1,1])  }

 Is there a better way to do this?   Thanks for any help!

 Jeff

 __
 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.


Re: [R] Extracting elements from a list

2007-07-14 Thread Prof Brian Ripley
The golden rule is that [[ ]] only returns one element:

sapply(Lst, [, 1, 1)

is probably what you want.

On Sat, 14 Jul 2007, 'Forest Floor' aka 'rhago' aka 'Jeff' aka 'R User 
confused about his identity' wrote:

 Hi,

 I would love an easy way to extract elements from a list.

 For example, if I want the first element from each of 10 arrays stored
 in a list,

 Lst[[1:10]][1,1]  seems like a logical approach, but gives this error:
 Error: recursive indexing failed at level 3

It doesn't if you really have a list of 2D arrays.

 The following workaround is functional but can get annoying/confusing.

 first.element=vector()
 for (i in 1:10){ first.element=c(first.element, Lst[[i]][1,1])  }

 Is there a better way to do this?   Thanks for any help!

 Jeff
 __
 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.

PLEASE DO!

-- 
Brian D. Ripley,  [EMAIL PROTECTED]
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, UKFax:  +44 1865 272595

__
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.