📜  从 R 中的 data.table 中删除多列(1)

📅  最后修改于: 2023-12-03 15:06:32.224000             🧑  作者: Mango

从 R 中的 data.table 中删除多列

如果你正在使用 data.table 包来处理数据,可能需要删除数据表中的多列。下面将介绍删除 data.table 中多列的不同方法。

使用 .SD 和 .SDcols

.SD 代表 Sub Data.table,可以访问所有列。.SDcols 则是一个代表需要访问的列名的字符向量。

library(data.table)

# 创建一个包含多列的数据表
dt <- data.table(a = 1:5, b = 6:10, c = 11:15, d = 16:20)

# 删除列 b 和 d
dt[, .SD, .SDcols = !c("b", "d")]

上述代码中,.SDcols = !c("b", "d") 表示保留除了列 b 和 d 以外的所有列,! 表示取反。

使用 set

set 是 data.table 包中的一个函数,可以在不创建新的数据表的情况下更新数据表。我们可以使用 set 函数来删除多列。

library(data.table)

# 创建一个包含多列的数据表
dt <- data.table(a = 1:5, b = 6:10, c = 11:15, d = 16:20)

# 删除列 b 和 d
set(dt, j = !c("b", "d"), value = NULL)

上述代码中,j = !c("b", "d") 表示保留除了列 b 和 d 以外的所有列,! 表示取反,value = NULL 表示将这些列的值设置为 NULL。

使用 with

我们还可以使用 with 函数来删除多列:

library(data.table)

# 创建一个包含多列的数据表
dt <- data.table(a = 1:5, b = 6:10, c = 11:15, d = 16:20)

# 删除列 b 和 d
dt[, with = F][!c("b", "d")]

上述代码中,with = F 表示 data.table 不应该返回值,!c("b", "d") 表示删除列 b 和 d。

以上就是一些常用的从 data.table 中删除多列的方法。可以根据具体需求选择适合自己的方法。