On Wed, Mar 07, 2012 at 03:14:05PM -0500, Alexander Shenkin wrote: > Hello, > > I need to take a dot product of each row of a dataframe and a vector. > The number of columns will be dynamic. The way I've been doing it so > far is contorted. Is there a better way? > > dotproduct <- function(dataf, v2) { > apply(t(t(as.matrix(a)) * v2),1,sum) #contorted! > } > > df = data.frame(a=c(1,2,3),b=c(4,5,6)) > vec = c(4,5) > dotproduct(df, vec)
Hi. If i understand correctly, then the following should be equivalent as.matrix(df) %*% cbind(vec) [,1] [1,] 24 [2,] 33 [3,] 42 Hope this helps. Petr Savicky. ______________________________________________ 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.