2017-07-05 73 views
0

我正在學習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

'DT [相交(名稱(DT),表),與= FALSE]'' –

+0

list'爲可變的名聲。 –

回答

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

非常感謝! – Suvar