Во-первых, создайте ваши данные как data.frame, а не как матрицу, чтобы числовые столбцы не приводились к символу. (также можно использовать первые две строки из ответа sotos для преобразования в data.frame из матрицы, если вы уже создали матрицу)
df <- data.frame(row_id = c("r1","r2","r3","r4","r1","r2","r3","r4"),
v1 = c(3,2,5,2,5,2,6,4),
v2 = c(4,3,5,3,7,4,6,7))
Теперь, если вы преобразуете свой data.frame в data.tableс setDT
вы можете выполнить эту операцию, используя группировку data.table (by = row_id
устанавливает группы)
library(data.table)
setDT(df)
df[, ratio := (v1 + v2)/sum(v1 + v2), by = row_id]
df
# row_id v1 v2 ratio
# 1: r1 3 4 0.3684211
# 2: r2 2 3 0.4545455
# 3: r3 5 5 0.4545455
# 4: r4 2 3 0.3125000
# 5: r1 5 7 0.6315789
# 6: r2 2 4 0.5454545
# 7: r3 6 6 0.5454545
# 8: r4 4 7 0.6875000