First of all Mahout's Math-Scala DSL, is really nice. I can write really compact code.
Here is a my problem description ( i referred to [1] ). First I import all the required classes in Scala REPL: import org.apache.mahout.math.{ Vector => MahoutVector } import org.apache.mahout.math.scalabindings._ import org.apache.mahout.math.DenseMatrix import scala.util.Random import org.apache.mahout.math.Matrix import Math.min import RLikeOps._ Then I create a matrix scala> val a = dense((1, 2, 3), (3, 4, 5)) a: org.apache.mahout.math.DenseMatrix = { 0 => {0:1.0,1:2.0,2:3.0} 1 => {0:3.0,1:4.0,2:5.0} } Appply the function using a loop: scala> for(r <- 0 until a.numRows; c <- 0 until a(r,::).size) { a(r,c) = Math.log(a(r,c)) } warning: there were 1 deprecation warnings; re-run with -deprecation for details The resulting matrix scala> a res35: org.apache.mahout.math.DenseMatrix = { 0 => {1:0.6931471805599453,2:1.0986122886681098} 1 => {0:1.0986122886681098,1:1.3862943611198906,2:1.6094379124341003} } I want to apply an arbitrary function ( such as Math.log, or a function defined by me ), to a matrix or vector withoug using any loops. This is possible in Octave/Matlab as described here [2]. How can I do this in Mahout using Scala DSL ? Thanks in advance. Regards, Saleem [1] https://mahout.apache.org/users/sparkbindings/home.html [2] http://stackoverflow.com/questions/2470844/loopless-function-calls-on-vector-matrix-members-in-matlab-octave