Вот подход, использующий возможности индексирования R и векторизованные операции. Создайте две последовательности индексов, которые соответствуют столбцам, которые вы хотите вычесть. Вот пример:
#5 row by 10 column matrix
m <- matrix(rnorm(50), ncol = 10)
#sequence one for columns 1,3,5,7,9
s1 <- seq(1,ncol(m),2)
#sequence two for columns 2,4,6,8,10
s2 <- seq(2,ncol(m),2)
#Create new matrix
m2 <- m[, s1] - m[, s2]
#apply some column names
colnames(m2) <- paste("x", s1, s2, sep = "_")
Только что понял, что ранее здесь задавал почти идентичный вопрос: Работа с несколькими столбцами одновременно