矩阵将是更好的数据结构:
m <- as.matrix(df) m[, 2 * (1:3) - 1] - m[, 2 * (1:3)] # A C E #[1,] 2 5 7 #[2,] 4 5 9 #[3,] 8 8 9
或者:
ind <- seq_len(ncol(m)) m[, ind %% 2L == 1L] - m[, ind %% 2L == 0L]
或者更容易使用矢量回收:
m[, c(TRUE, FALSE)] - m[, c(FALSE, TRUE)]