这是使用transpose 的data.table 选项
setDT(df)[, setNames(transpose(new), c("mpg", "cyl"))]
给了
mpg cyl
1: 21 6
2: 21 6
3: 22.8 4
4: 21.4 6
5: 18.7 8
6: 18.1 6
7: 14.3 8
8: 24.4 4
9: 22.8 4
10: 19.2 6
11: 17.8 6
12: 16.4 8
13: 17.3 8
14: 15.2 8
15: 10.4 8
16: 10.4 8
17: 14.7 8
18: 32.4 4
19: 30.4 4
20: 33.9 4
21: 21.5 4
22: 15.5 8
23: 15.2 8
24: 13.3 8
25: 19.2 8
26: 27.3 4
27: 26 4
28: 30.4 4
29: 15.8 8
30: 19.7 6
31: 15 8
32: 21.4 4
mpg cyl
或
> setDT(df)[, c("mpg", "cyl") := (lapply(transpose(new), unlist))][]
mpg cyl new
1: 21.0 6 21, 6
2: 21.0 6 21, 6
3: 22.8 4 22.8, 4.0
4: 21.4 6 21.4, 6.0
5: 18.7 8 18.7, 8.0
6: 18.1 6 18.1, 6.0
7: 14.3 8 14.3, 8.0
8: 24.4 4 24.4, 4.0
9: 22.8 4 22.8, 4.0
10: 19.2 6 19.2, 6.0
11: 17.8 6 17.8, 6.0
12: 16.4 8 16.4, 8.0
13: 17.3 8 17.3, 8.0
14: 15.2 8 15.2, 8.0
15: 10.4 8 10.4, 8.0
16: 10.4 8 10.4, 8.0
17: 14.7 8 14.7, 8.0
18: 32.4 4 32.4, 4.0
19: 30.4 4 30.4, 4.0
20: 33.9 4 33.9, 4.0
21: 21.5 4 21.5, 4.0
22: 15.5 8 15.5, 8.0
23: 15.2 8 15.2, 8.0
24: 13.3 8 13.3, 8.0
25: 19.2 8 19.2, 8.0
26: 27.3 4 27.3, 4.0
27: 26.0 4 26, 4
28: 30.4 4 30.4, 4.0
29: 15.8 8 15.8, 8.0
30: 19.7 6 19.7, 6.0
31: 15.0 8 15, 8
32: 21.4 4 21.4, 4.0
mpg cyl new