我只需从data.table
中排除一组列。我可以使用-c()
使用这些列的数量来完成此操作:
dti <- data.table(iris)
dti1 <- dti[, -c(3,5), with=F]
但我想使用列名而不是数字,比如
colsExcl <- c('Petal.Length', 'Species');
dti1 <- dti[, -c(colsExcl), with=F] # error: invalid argument to unary operator
答案 0 :(得分:2)
您可以尝试setdiff
或:= NULL
,但行为不同。
使用setdiff
,您必须将输出分配给另一个对象:
colsExcl <- c('Petal.Length', 'Species')
dti1 <- dti[, setdiff(names(dti), colsExcl), with = FALSE]
相比之下,使用:= NULL
会删除原始data.table
中的列:
dti[, (colsExcl) := NULL][]
# Sepal.Length Sepal.Width Petal.Width
# 1: 5.1 3.5 0.2
# 2: 4.9 3.0 0.2
# 3: 4.7 3.2 0.2
# 4: 4.6 3.1 0.2
# 5: 5.0 3.6 0.2
# ---
# 146: 6.7 3.0 2.3
# 147: 6.3 2.5 1.9
# 148: 6.5 3.0 2.0
# 149: 6.2 3.4 2.3
# 150: 5.9 3.0 1.8