R语言 按名称模式删除data.table中的列

rhfm7lfc  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(92)

在R中,可以根据名称模式轻松地从 Dataframe 中删除列:例如,参见How to drop columns by name pattern in R?Subset data to contain only columns whose names match a condition

> df <- data.frame(A=c(1,2,3), A2=c(1,2,3), B=c(1,2,3), BG=c(2,2,3))
> df[, -grep("A", colnames(df))]
  B BG
1 1  2
2 2  2
3 3  3

字符串
但是直接将解决方案应用于data.table是行不通的。

> dt <- data.table(A=c(1,2,3), A2=c(1,2,3), B=c(1,2,3), BG=c(2,2,3))
> dt[, -grep("A", colnames(df))]
[1] -1 -2


能做些什么呢?

relj7zay

relj7zay1#

正如Rich Scriven指出的那样,dt[, grep("A", names(dt)) := NULL]可以工作。

> dt <- data.table(A=c(1,2,3), A2=c(1,2,3), B=c(1,2,3), BG=c(2,2,3))
> dt[, grep("A", names(dt)) := NULL]
> dt

   B BG
1: 1  2
2: 2  2
3: 3  3

字符串

46qrfjad

46qrfjad2#

使用内置的data.table::patterns函数:

df <- data.table(A=c(1,2,3), A2=c(1,2,3), B=c(1,2,3), BG=c(2,2,3))
df[, .SD, .SDcols = !patterns("A")]

字符串

相关问题