首页 > 解决方案 > 如何删除数据表R中同名的两列

问题描述

我有以下数据表:

my_dt = data.table(a = c(1,2,3), b = c(2,3,4), a = c(8,9,9))
> my_dt
   a b a
1: 1 2 8
2: 2 3 9
3: 3 4 9

该表有两列同名,我想删除它们。我可以简单地设置a为 NULL,然后再做一次,但我想检查是否有数据表方法可以做到这一点。我尝试了规定的方式(Removing multiple columns from R data.table with parameter for columns to remove)但我无法开始工作:

cols_to_delete = "a"
my_dt[, (cols_to_delete) := NULL]
#Only deletes the first occurence
> my_dt
   b a
1: 2 8
2: 3 9
3: 4 9

cols_to_delete = c("a", "a")
my_dt[, (cols_to_delete) := NULL]
Error in `[.data.table`(my_dt, , `:=`((cols_to_delete), NULL)) : 
  Can't assign to the same column twice in the same query (duplicates detected).

我知道拥有相同的列名并不理想,但我想知道是否缺少某些命令。

标签: rdata.table

解决方案


您可以改用索引。

cols_to_delete = c(1, 3)
# OR
# cols_to_delete <- which(duplicated(names(my_dt))  | duplicated(names(my_dt),fromLast = TRUE))
my_dt[, (cols_to_delete) := NULL]

推荐阅读