通过名称向量过滤数据表中的列

时间:2017-07-05 13:35:16

标签: r data.table

我正在学习data.table并尝试使用包含一组列名的向量来过滤某些列。

> dt <- data.table(A=1:5, B=2:6, C=3:7)
> dt
   A B C
1: 1 2 3
2: 2 3 4
3: 3 4 5
4: 4 5 6
5: 5 6 7
> 
> list <- c("A", "B")
> dt[ ,list, with=FALSE]
   A B
1: 1 2
2: 2 3
3: 3 4
4: 4 5
5: 5 6
> 

这样可以正常工作并过滤列。 但是,列表中的“缺失”项将返回错误:

> list <- c("A", "B", "D")
> dt[ ,list, with=FALSE]
Error in `[.data.table`(dt, , list, with = FALSE) : 
  column(s) not found: D

如何从列表中忽略缺少的列名并从dt data.table返回现有列?

1 个答案:

答案 0 :(得分:3)

dt[ ,colnames(dt) %in% list, with=FALSE]