2017-10-20 11 views
0

内部結合を使用して2つのdata.tableを結合しようとしています。一致するものが見つからない可能性があります。次に、右側のcol名を持つ空のdata.tableが必要です。data.table一致が見つからない場合、内部結合はエラーを生成します

dt1 <- data.table(A = c(1,2), B = c(1,2)) 
dt2 <- data.table(A = c(3,4), D = c(3,4)) 
setkey(dt1, A) 
setkey(dt2, A) 
dt1[dt2, nomatch = 0] 
Error in xj[i] : invalid subscript type 'list' 
merge(dt1, dt2, 
     all.x = F, 
     all.y = F) 

Empty data.table (0 rows) of 3 cols: A,B,D 

第2の方法は、私に望ましい答えを与えます。しかし、私はそれが速いので、最初の構文を好む。誰かがtrycatch文を使わずにこのエラーを解決する方法を知っていますか?

+1

を使用して、あなたは、 'setkey'を使用する必要はありません'dt1 [dt2、on =" A "、nomatch = 0]'のようなコードに変換します。詳細は、[data.tableページ](https://github.com/Rdatatable/data.table/wiki/Getting-started)の自動インデックス作成のセクションを参照してください。 – lmo

答えて

1

私は最初の例から、あなたのエラーを再現することはできません..私はあなたが

dt1[dt2, nomatch = 0] 

を意味すると仮定?

は私が手:あなたがこれを減らすことができるように

Empty data.table (0 rows) of 3 cols: A,B,D 

data.tableの最近のバージョンでは、最新のRのバージョンとdata.table

0

私はそれが単なるタイプミスだと思う:

library(data.table) 
dt1 <- data.table(A = c(1,2), B = c(1,2)) 
dt2 <- data.table(A = c(3,4), D = c(3,4)) 

setkey(dt1, A) 
setkey(dt2, A) 
dt1[dt2, nomatch = 0] #instead of t1[t2, nomatch = 0] 
Empty data.table (0 rows) of 3 cols: A,B,D 
関連する問題