Вам даже не нужно apply
здесь, просто сделайте
dat <- data.frame(input1, input2)
dat[, "output"] <- dat[, "input1"] + dat[, "input2"]
dat
# input1 input2 output
#1 1 101 102
#2 2 102 104
#3 3 103 106
Вот краткий тест двух подходов
# dummy data
dat2 <- do.call(rbind, replicate(1e5, dat, simplify = FALSE))
library(microbenchmark)
benchmark <- microbenchmark(
"apply" = transform(dat2, output = apply(dat2, 1, function(x) x['input1'] + x['input2'])),
"not-apply" = `[<-`(dat2, "output", value = dat2[, "input1"] + dat2[, "input2"]),
times = 50
)
autoplot(benchmark)
#Unit: milliseconds
# expr min lq mean median #uq max neval
# apply 1422.320194 1652.910918 2208.146278 2170.704283 2659.947690 3665.780187 50
# not-apply 1.778778 1.823522 1.976408 1.900479 2.123708 2.746042 50