Arne Henningsen <ahenningsen <at> email.uni-kiel.de> writes: : : Hi, : : thank you very much Sundar, Patrick, Tony, Mahub and Gabor for your helpful : answers! All your examples work great. They are all more straightforeward : than my example and much faster than the for-loop. : These are the average elapsed times (in seconds) returned by system.time() [3] : (applied to my real function and my real data): : : my original for-loop: : 5.55 : : the example I presented in my previous email (using apply): : 2.35 : : example suggested by Tony (using apply): : 2.34 : : example suggested by Gabor (using lapply): : 2.50 : : examples suggested by Sundar and Mahub (using lapply): : 2.68 :
Perhaps any comparison should also include simplicity. This is somewhat subjective but just to objectify it I have reworked each solution to compactify it as much as I could and then calculated the number of characters in each solution using wc: AH - 293 characters TP - 70 characters ML - 62 characters GG - 48 characters The versions I used are below. --- # data myData <- data.frame( a = c( 1,2,3 ), b = c( 4,5,6 ) ) # AH 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 # TP lapply(apply(myData, 1, function(x) list(matrix(x, 2, 2))), "[[", 1) # ML lapply(1:nrow(myData), function(i) matrix(myData[i,], 2, 2)) # GG lapply(as.data.frame(t(myData)), matrix, 2, 2) ______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html