R按元素比较data.table元素

时间:2017-12-04 04:17:58

标签: r compare data.table element

有两个data.tables:

> 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中的每一行进行逐元素比较。结果data.table看起来像:

> 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

如何实现它?

2 个答案:

答案 0 :(得分:1)

aDT[rep(1, nrow(bDT))] == bDT
#       colA  colB  colC
# [1,] FALSE FALSE  TRUE
# [2,]  TRUE  TRUE FALSE

答案 1 :(得分:0)

另一个选项是Map来比较两个数据集的相应列

aDT[, Map(`==`, .SD, bDT)]
#   colA  colB  colC
#1: FALSE FALSE  TRUE
#2:  TRUE  TRUE FALSE