data.table中是否有基本功能或功能可以帮助我做到这一点?我正在寻找一种处理大数据的有效方法。
例如:
matrix A:
a b
a c
d b
d a
matrix B:
a b
d c
a d
%A中的B%应返回T,F,F
答案 0 :(得分:3)
如果您确实正在处理data.table
(OP中不明确),这是一种可能性:
A = data.table(c('a','a','d','d'),c('b','c','b','a'))
B = data.table(c('a','d','a'), c('b','c','d'))
setkey(A, V1, V2)
A[B, .N, by = .EACHI] # in data.table <= 1.9.2 use A[B, .N]
# V1 V2 N
#1: a b 1
#2: d c 0
#3: a d 0
然后,您可以使用列N
执行任何操作,包括根据需要将其转换为逻辑:
as.logical(A[B, .N, by = .EACHI]$N)
#[1] TRUE FALSE FALSE
答案 1 :(得分:1)
apply(B, 1, list) %in% apply(A, 1, list)
适用于矩阵和data.tables(和data.frames)。
A <- cbind(c('a','a','d','d'), c('b','c','b','a'))
B <- cbind(c('a','d','a'), c('b','c','d'))
apply(B, 1, list) %in% apply(A, 1, list)
# [1] TRUE FALSE FALSE
identical(.Last.value, apply(data.table(B), 1, list) %in% apply(data.table(A), 1, list))
# [1] TRUE
答案 2 :(得分:1)
有可能:使用duplicated
和rbind
。使用@ Robert的样本数据:
A <- cbind(c('a','a','d','d'), c('b','c','b','a'))
B <- cbind(c('a','d','a'), c('b','c','d'))
duplicated(rbind(B, unique(A)), fromLast = TRUE)[1:nrow(B)]
# [1] TRUE FALSE FALSE