代码:
a <- matrix(1:10, nrow=5)
b <- c(1, 4, 1)
a[a[, 1]%in%b, ]
答案是:
[, 1] [, 2]
[1, ] 1 6
[2, ] 4 9
预期产出:
[, 1] [, 2]
[1, ] 1 6
[2, ] 4 9
[3, ] 1 6
这意味着,向量b中的最后1个也应该得到相应的值。
但是使用%in%
,似乎删除了重复的1,我想保留
此值,并在生成的矩阵中获得3行。
答案 0 :(得分:1)
通过data.table
实现语法糖(连同超速):
library(data.table)
a = as.data.table(a)
setkey(a, V1)
a[J(b)]
# V1 V2
#1: 1 6
#2: 4 9
#3: 1 6
如果b
也是data.table
,那就更好了:
b = as.data.table(b)
a[b]
# V1 V2
#1: 1 6
#2: 4 9
#3: 1 6
答案 1 :(得分:0)
我认为你过度复杂化了,请尝试:a[b, ]
编辑:正如@eddi所指出的那样,上面只是意外运作。
以下是使用sapply
的另一种方式:
t(sapply(b,function(x){
a[a[,1]==x,]
}))