R逐元素比较data.table个元素
R compare data.table elements by elements
有两个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
如何实现?
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
有两个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
如何实现?
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