i have function applied on vector of lenght 5 returns matrix 4 rows , 5 columns. want use apply() in order call function again on each row of results matrix , obtain matrix 16 (4*4) rows , 5 columns. unfortuneately apply() combines results 4x20 matrix. how possible change without using lists? matrixfromvector = function(x){ return(rbind(x*rnorm(1,1,.01),x*rnorm(1,1,.01),x*rnorm(1,1,.1),x*rnorm(1,1,.01))) } = matrixfromvector(1:5) t(a) [,1] [,2] [,3] [,4] [1,] 1.008391 1.005974 1.077223 0.9865611 [2,] 2.016782 2.011947 2.154445 1.9731222 [3,] 3.025173 3.017921 3.231668 2.9596833 [4,] 4.033565 4.023894 4.308890 3.9462444 [5,] 5.041956 5.029868 5.386113 4.9328055 after applying function each row of have [1,] [2,] [3,] [4,] [5,] [1,] 1.0242459 2.0484917 3.0727376 4.0969835 5.1212293 [2,] 0.9999314 1.9998629 2.9997943 3.9997257 4.9996572 [3,] 1.0836573 2.1673146 3.2509719 4.3346292 5....