我正在学习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返回现有列?
答案 0 :(得分:3)
dt[ ,colnames(dt) %in% list, with=FALSE]