r - 如何删除数据表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).
我知道拥有相同的列名并不理想,但我想知道是否缺少某些命令。
解决方案
您可以改用索引。
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]
推荐阅读
- python - 如何从列表中删除所有符合特定格式的字符串?
- web-config -
不工作? - linq - LINQ 使用多对多关系聚合结果
- google-chrome - 在扩展加载而不是页面加载时运行 contentscript
- ruby-on-rails - 子对象无法在 before_destroy 回调中删除父对象
- ios - Xcode 10.1 无法找到或创建 iOS 模拟器
- c# - NU1107 在单元测试项目中检测到版本冲突
- java - 将 lambda 表达式转换为 JAVA 7
- if-statement - 如果条件到 Jenkinsfile 中的文件夹分支
- java - 如何删除字符串的一部分?