gmarais
gmarais

Reputation: 1891

R list get first item of each element

This should probably be very easy for someone to answer but I have had no success on finding the answer anywhere.

I am trying to return, from a list in R, the first item of each element of the list.

> a
[1] 1 2 3
> b
[1] 11 22 33
> c
[1] 111 222 333
> d <- list(a = a,b = b,c = c)
> d
$a
[1] 1 2 3

$b
[1] 11 22 33

$c
[1] 111 222 333

Based on the construction of my list d above, I want to return a vector with three values:

return  1 11 111

Upvotes: 21

Views: 22699

Answers (2)

emilliman5
emilliman5

Reputation: 5966

sapply(d, "[[", 1) should do the trick.

A bit of explanation:

sapply: iterates over the elements in the list
[[: is the subset function. So we are asking sapply to use the subset function on each list element.
1 : is an argument passed to "[["

It turns out that "[" or "[[" can be called in a traditional manner which may help to illustrate the point:

x <- 10:1
"["(x, 3)
 # [1] 8

Upvotes: 44

amatsuo_net
amatsuo_net

Reputation: 2448

You can do

 output <- sapply(d, function(x) x[1])

If you don't need the names

 names(output) <- NULL

Upvotes: 11

Related Questions