Вам нужно будет настроить соответствующую индексацию, но, похоже, это работает:
#fake data
dat <- data.frame(fix1 = runif(10), fix2 = runif(10), prefix = sample(0:1, 10, TRUE),
corfix = sample(0:1, 10, TRUE), errfix = sample(0:1, 10, TRUE))
dat[, 3:5] <- apply(dat[, 3:5], 2, function(x) ifelse(x == 1, abs(dat$fix1 - dat$fix2),x))