Вы можете использовать sweep
, чтобы умножить значения в кадре данных на вектор, а затем использовать rowSums
.
rowSums(sweep(data.frame(a=c(1,2,3), b=c(5,6,7)), 2, c(2, 2), `*`))
#[1] 12 16 20
Другой метод - транспонировать фрейм данных и умножить, а затем взять colSums
, однако транспонирование преобразует фрейм данных в матрицу.
colSums(t(data.frame(a=c(1,2,3), b=c(5,6,7))) * c(2, 2))