Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

R: Mapping Over a List of Lists

DZone 's Guide to

R: Mapping Over a List of Lists

· Big Data Zone ·
Free Resource

Comment (0)

Save
{{ articles[0].views | formatCount}} Views

```> file <- "https://dl.dropbox.com/u/7710864/data/csv_hid/ss06hid.csv"

We then had to filter the data based on the values in a couple of columns and work out how many rows were returned in each case:

```> one <- acomm[acomm\$RMS == 4 & !is.na(acomm\$RMS)
& acomm\$BDS == 3 & !is.na(acomm\$BDS), c("RMS")]
> one
[1] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
...
[137] 4 4 4 4 4 4 4 4 4 4 4 4
> two <- acomm[acomm\$RMS == 5 & !is.na(acomm\$RMS)
& acomm\$BDS == 2 & !is.na(acomm\$BDS), c("RMS")]
> two
[1] 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
...
[375] 5 5 5 5 5 5 5 5 5 5 5 5

> three <- acomm[acomm\$RMS == 7 & !is.na(acomm\$RMS)
& acomm\$BDS == 2 & !is.na(acomm\$BDS), c("RMS")]
> three
[1] 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
[36] 7 7 7 7 7 7 7 7 7 7 7 7 7 7```

So I needed to know how many values were in the variables onetwo and three.

I thought I could probably put those lists into another list and then use apply or one of its variants to get the length of each one.

I usually use the c function to help me create lists but it’s not helpful in this case as it creates one massive vector with all the values concatenated together:

Calling apply doesn’t have the intended outcome:

```> lapply(c(one, two, three), length)
...
[[582]]
[1] 1

[[583]]
[1] 1```

Instead what we need is the list function:

```> lapply(list(one, two, three), length)
[[1]]
[1] 148

[[2]]
[1] 386

[[3]]
[1] 49```

Et voila!

The code is on github as usual.

Topics:

Comment (0)

Save
{{ articles[0].views | formatCount}} Views

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.