#or mapply(emd2d,sapply(output1,`[`,1),sapply(output1,`[`,2)) #[1] NaN -6.089909 A.K.
On Thursday, January 2, 2014 2:33 PM, arun <smartpink...@yahoo.com> wrote: Hi, May be this helps: set.seed(42) output1 <- list(list(matrix(0,8,11),matrix(0,8,11)), list(matrix(rnorm(80),8,10),matrix(rnorm(80),8,10))) library(emdist) sapply(output1,function(x) {emd2d(x[[seq_along(x)[1]]],x[[seq_along(x)[2]]]) }) #[1] NaN -6.089909 A.K. I'm trying to apply a function to a list using rapply but I'm having trouble doing so. I'm trying to calculate the earth-movers distance using the emdist package. Every index in the list has two subindices. I want to calculate the earth-movers distance for these subindices iteratively. An example of the list: head(output) [[1]] [[1]][[1]] [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [1,] 0 0 0 0 0 0 0 0 0 0 0 [2,] 0 0 0 0 0 0 0 0 0 0 0 [3,] 0 0 0 0 0 0 0 0 0 0 0 [4,] 0 0 0 0 0 0 0 0 0 0 0 [5,] 0 0 0 0 0 0 0 0 0 0 0 [6,] 0 0 0 0 0 0 0 0 0 0 0 [7,] 0 0 0 0 0 0 0 0 0 0 0 [8,] 0 0 0 0 0 0 0 0 0 0 0 [[1]][[2]] [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [1,] 0 0 0 0 0 0 0 0 0 0 0 [2,] 0 0 0 0 0 0 0 0 0 0 0 [3,] 0 0 0 0 0 0 0 0 0 0 0 [4,] 0 0 0 0 0 0 0 0 0 0 0 [5,] 0 0 0 0 0 0 0 0 0 0 0 [6,] 0 0 0 0 0 0 0 0 0 0 0 [7,] 0 0 0 0 0 0 0 0 0 0 0 [8,] 0 0 0 0 0 0 0 0 0 0 0 [[2]] [[2]][[1]] [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 1.336731 3.264521 4.567414 4.871417 4.386032 5.75678 6.549675 5.834462 5.401988 5.933774 [2,] 1.336731 3.264521 4.567414 4.871417 4.386032 5.75678 6.304306 5.834462 5.401988 5.933774 [3,] 1.336731 3.264521 4.567414 4.871417 4.386032 5.75678 6.485151 5.834462 5.401988 5.933774 [4,] 1.336731 3.264521 4.567414 4.871417 4.386032 5.75678 6.691836 5.834462 5.401988 5.933774 [5,] 1.336731 3.264521 4.567414 4.871417 4.386032 5.75678 6.691836 5.834462 5.401988 5.933774 [6,] 1.336731 3.264521 4.567414 4.871417 4.386032 5.75678 6.691836 5.834462 5.401988 5.933774 [7,] 1.336731 3.264521 4.567414 4.871417 4.386032 5.75678 6.691836 5.834462 5.401988 5.933774 [8,] 1.336731 3.264521 4.567414 4.871417 4.386032 5.75678 6.691836 5.834462 5.401988 5.933774 [,11] [1,] 6.549675 [2,] 6.304306 [3,] 6.485151 [4,] 6.790983 [5,] 7.102360 [6,] 7.211278 [7,] 7.211278 [8,] 7.164059 [[2]][[2]] [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [1,] 6.886406 8.814196 10.11709 10.42109 9.935707 11.30645 12.24151 11.38414 10.95166 [2,] 6.641038 8.568828 9.87172 10.17572 9.690339 11.06109 11.99614 11.13877 10.70629 [3,] 6.821883 8.749673 10.05257 10.35657 9.871184 11.24193 12.17699 11.31961 10.88714 [4,] 7.127715 9.055504 10.35840 10.66240 10.177015 11.54776 12.48282 11.62545 11.19297 [5,] 7.439092 9.366881 10.66977 10.97378 10.488392 11.85914 12.79420 11.93682 11.50435 [6,] 7.749465 9.677255 10.98015 11.28415 10.798766 12.16951 13.10457 12.24720 11.81472 [7,] 7.783697 9.711487 11.01438 11.31838 10.832998 12.20375 13.13880 12.28143 11.84895 [8,] 7.500790 9.428580 10.73147 11.03548 10.550091 11.92084 12.85590 11.99852 11.56605 [,10] [,11] [1,] 11.48345 12.76095 [2,] 11.23808 12.51558 [3,] 11.41893 12.69643 [4,] 11.72476 13.00226 [5,] 12.03613 13.31364 [6,] 12.34651 13.62401 [7,] 12.38074 13.65824 [8,] 12.09783 13.37534 I have tried combining rapply and do.call in this fashion but it has failed so far: library(emdist) do.call(rbind, rapply(output, function(x,y) emd2d)) The error message I get is: Error in (function (..., deparse.level = 1) : cannot coerce type 'closure' to vector of type 'list' Any ideas? ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.