[R] make apply() return a list

Mahbub Latif mahbub.latif at gmail.com
Mon Nov 1 19:56:07 CET 2004


How about this... 

x = matrix(1:27, ncol=9, byrow=T)
nr= nrow(x)
lapply(1:nr, function(i) matrix(x[i,], nrow=3, byrow=T))

Mahbub.


On Mon, 1 Nov 2004 19:37:08 +0100, Arne Henningsen
<ahenningsen at email.uni-kiel.de> wrote:
> Hi,
> 
> I have a dataframe (say myData) and want to get a list (say myList) that
> contains a matrix for each row of the dataframe myData. These matrices are
> calculated based on the corresponding row of myData. Using a for()-loop to do
> this is very slow. Thus, I tried to use apply(). However, afaik apply() does
> only return a list if the matrices have different dimensions, while my
> matrices have all the same dimension. To get a list I could change the
> dimension of one matrix artificially and restore it after apply():
> 
> This a (very much) simplified example of what I did:
> > myData <- data.frame( a = c( 1,2,3 ), b = c( 4,5,6 ) )
> > myFunction <- function( values ) {
> +    myMatrix <- matrix( values, 2, 2 )
> +    if( all( values == myData[ 1, ] ) ) {
> +       myMatrix <- cbind( myMatrix, rep( 0, 2 ) )
> +    }
> +    return( myMatrix )
> + }
> > myList <- apply( myData, 1, myFunction )
> > myList[[ 1 ]] <- myList[[ 1 ]][ 1:2, 1:2 ]
> > myList
> $"1"
>      [,1] [,2]
> [1,]    1    1
> [2,]    4    4
> 
> $"2"
>      [,1] [,2]
> [1,]    2    2
> [2,]    5    5
> 
> $"3"
>      [,1] [,2]
> [1,]    3    3
> [2,]    6    6
> 
> This exactly does what I want and really speeds up the calculation, but I
> wonder if there is an easier way to make apply() return a list.
> 
> Thanks for your help,
> Arne
> 
> --
> Arne Henningsen
> Department of Agricultural Economics
> University of Kiel
> Olshausenstr. 40
> D-24098 Kiel (Germany)
> Tel: +49-431-880 4445
> Fax: +49-431-880 1397
> ahenningsen at agric-econ.uni-kiel.de
> http://www.uni-kiel.de/agrarpol/ahenningsen/
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
> 


-- 
A.H.M. Mahbub-ul Latif
PhD Student
Department of Medical Statistics 
University of Goettingen
Germany




More information about the R-help mailing list