如何按R中的行%%?

时间:2014-07-28 17:00:24

标签: r data.table

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

3 个答案:

答案 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)

有可能:使用duplicatedrbind。使用@ 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