library("tidyverse")
library("microbenchmark")
sample <- tibble(
  Var_1 = c(1, 0, 1, 0),
  Var_2 = c(1, 1, 0, 0),
  Var_3 = c(2, 2, 1, 1)
)
weights <- c(2, 3, 4)
method1 <- function() {
  sample |>
    mutate(Weighted_Sum = Var_1 * weights[1] + Var_2 * weights[2] + Var_3 * weights[3]) |>
    select(Weighted_Sum)
}
method2 <- function() {
  sample |>
    rowwise() |>
    mutate(Weighted_Sum = sum(c_across(starts_with("Var_")) * weights)) |>
    ungroup() |>
    select(Weighted_Sum)
}
# Benchmark the two methods
benchmark_results <- microbenchmark(
  method1 = method1(),
  method2 = method2(),
  times = 1000  # Number of iterations
)
print(benchmark_results)
Unit: microseconds
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CmxpYnJhcnkoInRpZHl2ZXJzZSIpCmxpYnJhcnkoIm1pY3JvYmVuY2htYXJrIikKYGBgCgpgYGB7cn0Kc2FtcGxlIDwtIHRpYmJsZSgKICBWYXJfMSA9IGMoMSwgMCwgMSwgMCksCiAgVmFyXzIgPSBjKDEsIDEsIDAsIDApLAogIFZhcl8zID0gYygyLCAyLCAxLCAxKQopCndlaWdodHMgPC0gYygyLCAzLCA0KQpgYGAKCmBgYHtyfQptZXRob2QxIDwtIGZ1bmN0aW9uKCkgewogIHNhbXBsZSB8PgogICAgbXV0YXRlKFdlaWdodGVkX1N1bSA9IFZhcl8xICogd2VpZ2h0c1sxXSArIFZhcl8yICogd2VpZ2h0c1syXSArIFZhcl8zICogd2VpZ2h0c1szXSkgfD4KICAgIHNlbGVjdChXZWlnaHRlZF9TdW0pCn0KbWV0aG9kMiA8LSBmdW5jdGlvbigpIHsKICBzYW1wbGUgfD4KICAgIHJvd3dpc2UoKSB8PgogICAgbXV0YXRlKFdlaWdodGVkX1N1bSA9IHN1bShjX2Fjcm9zcyhzdGFydHNfd2l0aCgiVmFyXyIpKSAqIHdlaWdodHMpKSB8PgogICAgdW5ncm91cCgpIHw+CiAgICBzZWxlY3QoV2VpZ2h0ZWRfU3VtKQp9CmBgYAoKYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RmFsc2V9CiMgQmVuY2htYXJrIHRoZSB0d28gbWV0aG9kcwpiZW5jaG1hcmtfcmVzdWx0cyA8LSBtaWNyb2JlbmNobWFyaygKICBtZXRob2QxID0gbWV0aG9kMSgpLAogIG1ldGhvZDIgPSBtZXRob2QyKCksCiAgdGltZXMgPSAxMDAwICAjIE51bWJlciBvZiBpdGVyYXRpb25zCikKcHJpbnQoYmVuY2htYXJrX3Jlc3VsdHMpCmBgYAo=