有两个数据。
> aDT <- data.table(colA = "apple", colB = "banana", colC = "4")
> aDT
colA colB colC
1: apple banana 4
> bDT <- data.table(colA = c("purple","apple"), colB = c("pear","banana"), colC = c("4","2"))
> bDT
colA colB colC
1: purple pear 4
2: apple banana 2
我想将ADT中唯一的一行与BDT中的每个行(按元素元素)进行比较。最终的数据。表情如下:
> resultDT <- data.table(colA = c(FALSE,TRUE), colB = c(FALSE,TRUE), colC = c(TRUE,FALSE))
> resultDT
colA colB colC
1: FALSE FALSE TRUE
2: TRUE TRUE FALSE
如何实现它?
aDT[rep(1, nrow(bDT))] == bDT
# colA colB colC
# [1,] FALSE FALSE TRUE
# [2,] TRUE TRUE FALSE
另一个选项是 Map
比较两个数据集的相应列
aDT[, Map(`==`, .SD, bDT)]
# colA colB colC
#1: FALSE FALSE TRUE
#2: TRUE TRUE FALSE