Over a million developers have joined DZone.

R: Mapping Over a List of Lists

· Big Data Zone

Learn how you can maximize big data in the cloud with Apache Hadoop. Download this eBook now. Brought to you in partnership with Hortonworks.

As part of the coursera Data Analysis course I had the following code to download and then read in a file:

> file <- "https://dl.dropbox.com/u/7710864/data/csv_hid/ss06hid.csv"
> download.file(file, destfile="americancommunity.csv", method="curl")
> acomm <- read.csv("americancommunity.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.

Hortonworks DataFlow is an integrated platform that makes data ingestion fast, easy, and secure. Download the white paper now.  Brought to you in partnership with Hortonworks

Topics:

Published at DZone with permission of Mark Needham, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

SEE AN EXAMPLE
Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.
Subscribe

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}