R 将某些列中的所有值偏移一个单位

R offset all the values in certain columns by one unit

下面是我的数据集。我正在尝试将 Col1, Col2, Col3, Col4 中的所有值偏移 1

ID      Col1    Col2    Col3    Col4
314     3       4       4       3
820     1       3       1       2
223     1       1       3       1
915     1       3       4       4
542     1       2       3       4
521     4       1       3       4
978     4       2       4       2
260     3       3       1       2
892     1       4       1       2

最终数据集应如下所示

ID      Col1    Col2    Col3    Col4
314     2       3       3       2
820     0       2       0       1
223     0       0       2       0
915     0       2       3       3
542     0       1       2       3
521     3       0       2       3
978     3       1       3       1
260     2       2       0       1
892     0       3       0       1

我知道有几种方法可以做到这一点,但我担心它们可能不会给我准确的结果。非常感谢对此的任何建议。提前致谢。

算术运算被向量化。我们可以直接从数字列中减去1并赋值回来

df1[-1] <- df1[-1] - 1

-输出

> df1
   ID Col1 Col2 Col3 Col4
1 314    2    3    3    2
2 820    0    2    0    1
3 223    0    0    2    0
4 915    0    2    3    3
5 542    0    1    2    3
6 521    3    0    2    3
7 978    3    1    3    1
8 260    2    2    0    1
9 892    0    3    0    1

数据

df1 <- structure(list(ID = c(314L, 820L, 223L, 915L, 542L, 521L, 978L, 
260L, 892L), Col1 = c(3L, 1L, 1L, 1L, 1L, 4L, 4L, 3L, 1L), Col2 = c(4L, 
3L, 1L, 3L, 2L, 1L, 2L, 3L, 4L), Col3 = c(4L, 1L, 3L, 4L, 3L, 
3L, 4L, 1L, 1L), Col4 = c(3L, 2L, 1L, 4L, 4L, 4L, 2L, 2L, 2L)), 
class = "data.frame", row.names = c(NA, 
-9L))