[R] Extracting Vectors from Lists of Lists Produced by Functions

J.R. Lockwood lockwood at rand.org
Fri May 30 21:54:36 CEST 2003

Dear Charles,

Since you are extracting vectors of the same length from each element
of the list, you can use "sapply"


after which you can transpose, rename, make into a dataframe as

In general you would use "lapply" to apply a function to each element
of a list, resulting in new list.


J.R. Lockwood
412-683-2300 x4941
lockwood at rand.org

> If you found my subject heading to be confusing then I'm sure you'll enjoy
> the example I've included below. I find the apply type functions to be
> wonderful for avoiding loops but when I use them with existing functions, I
> end up using loops anyway to extract the vectors I want. I would appreciate
> it if someone could show me how to avoid these loops. Thanks.
> noise<-matrix(data = rnorm(15, mean=0, sd=1), nrow = 5, ncol = 3,
>               byrow = FALSE, dimnames = NULL)
> measure<-apply(noise,2,t.test)
> measure
> tval<-NULL
> df<-NULL
> pval<-NULL
> for (i in 1:length(measure)){
>   tval[i]<-measure[[i]][[1]]
>   df[i]<-measure[[i]][[2]]
>   pval[i]<-measure[[i]][[3]]}
> data.frame(tval,df,pval)
> Charles E. White, Biostatistician
> Walter Reed Army Institute of Research
> 503 Robert Grant Ave., Room 1w102
> Silver Spring, MD 20910-1557
> 301 319-9781
> WRAIR Home Page: http://wrair-www.army.mil/

More information about the R-help mailing list