Вычитание x
-го столбца на x-1
, кроме случаев, когда x == 1
, затем вычитается из последнего столбца.
sapply(1:ncol(data), function(x) if (x == 1) {
data[, x] - data[, ncol(data)]
} else {
data[, x] - data[, x-1]})
# [,1] [,2] [,3]
#[1,] -4 2 2
#[2,] -4 2 2
#[3,] -5 3 2
Если вы действительно хотите вычесть строки, aПодобный подход может быть использован.
t(sapply(1:nrow(data), function(x) if (x == 1) {
data[x, ] - data[nrow(data), ]
} else {
data[x, ] - data[x-1, ]}))
# x y z
#[1,] -4 -5 -5
#[2,] 1 1 1
#[3,] 3 4 4