【发布时间】:2020-06-09 11:19:08
【问题描述】:
在我的代码中,我想以编程方式选择一些变量,并以硬编码的方式选择和重命名其他一些变量。我知道我可以通过setnames() 分两步实现这一目标,但我很好奇如何一步完成。
我认为我通过.SDcols 非常接近它。但是,当我尝试将.SD 与重命名的列组合时,“.SDcols 列”的前缀为“.SD.”。如何避免前缀?
library(data.table)
dt <- as.data.table(mtcars)[1:5]
dt
#> mpg cyl disp hp drat wt qsec vs am gear carb
#> 1: 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
#> 2: 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
#> 3: 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
#> 4: 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
#> 5: 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
my_vars <- c("cyl", "vs")
# with .SDcol
dt[, .(.SD, z = gear), .SDcol = my_vars]
#> .SD.cyl .SD.vs z # Note the prefix that had been added to the .SDcols
#> 1: 6 0 4
#> 2: 6 0 4
#> 3: 4 1 4
#> 4: 6 1 3
#> 5: 8 0 3
# with named vector
all_vars <- c(my_vars, z = "gear")
dt[, ..all_vars]
#> cyl vs gear
#> 1: 6 0 4
#> 2: 6 0 4
#> 3: 4 1 4
#> 4: 6 1 3
#> 5: 8 0 3
【问题讨论】:
-
啊,谢谢!您是否介意将此作为解决方案而不是评论发布,因为它实际上是解决方案?
标签: r data.table