当找不到匹配项时,data.table内部联接会产生错误

时间:2017-10-20 10:09:42

标签: r merge data.table

我正在尝试使用内部联接加入两个data.table。可能没有找到匹配项,那么我想要一个带有正确列号的空数据表。

struct

第二种方法给了我想要的答案。但我更喜欢第一种语法,因为它更快。有人知道如何在不使用trycatch语句的情况下解决此错误。

2 个答案:

答案 0 :(得分:1)

我无法从第一个例子中重现你的错误..我认为你的意思是

static func extractFromCSV(){
       //the Path of the csv
       let documentsUrl:URL =  FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first as URL!
       let destinationFileUrl = documentsUrl.appendingPathComponent("name.csv")
       let path = destinationFileUrl.path
       let importer = CSVImporter<YourClassName?>(path: path,delimiter: ";")
       importer.importRecords{ recordValues -> Sede_Azienda? in
         //this piece of code is called for each row. You can access to each field with recordValues[x] and manage the data.
         return nil //or the object if you need it
       }
 }

我明白了:

dt1[dt2, nomatch = 0]

使用最新版本的R和data.table

答案 1 :(得分: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