2017-07-05 8 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 ' –

+0

' list'は、変数の悪い名は[= FALSEで、(名前(DT)、リスト)交差]。 –

答えて

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

ありがとうございます! – Suvar

関連する問題