# [R] Extracting the first element of a list

John Fox jfox at mcmaster.ca
Wed Mar 27 15:54:23 CET 2002

```Dear Kevin,

At 10:48 PM 3/27/2002 +1200, Ko-Kang Kevin Wang wrote:

> > For the first element of a list L:
> >  L[[1]]
> > For the first elements of all elements (vector) of the list:
> >  lapply(L, function(x) x[1])
>
>So, suppose I've got a vector called foo, which has elements as follows:
>   305 159 251 215 101 224 306 199 194 325 329 221 318 238  17 ....
>(the rest omittied)
>
>And suppose I want to extract out the first digit of each number, so like:
>   3 1 2 2 1 2 3 1 1 3 3 2 3 2 1...
>
>Do I still use
>   lapply(foo, function(x) x[1])
>it doesn't seem to work...

The lapply function takes a list as its first argument, and a vector of
numbers isn't a list; moreover, each number isn't a vector a individual
digits that can be extracted by subscripting.

You could use something like the following:

> x <- c(1, 23, 456, 7890)
> x %/% 10^floor(log(x, 10))
[1] 1 2 4 7

If there are negative entries in x, use abs(x).

I hope that this helps,
John

-----------------------------------------------------
John Fox
Department of Sociology
McMaster University
email: jfox at mcmaster.ca
phone: 905-525-9140x23604
web: www.socsci.mcmaster.ca/jfox
-----------------------------------------------------

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

```