Best soln is to integrate R linear algebra:
> as.matrix(data2) %*% unlist(data)
#     [,1] 
#[1,]  106
#[2,]  140 
#[3,]  140
#[4,]  151
or you can sweep:
> rowSums(sweep(as.matrix(data2), 2, unlist(data), `*`))
#[1] 106 140 140 151
Where data is:
data=data.frame(a=4,b=6,c=8,d=5)
data2=data.frame(a=c(3,5,4,3),b=c(4,6,6,5),c=c(5,8,6,8),d=c(6,4,8,9))