假设您有一个简单的向量,例如c(2,3)
,并且您想检查它是否在向量列表中,例如list(c(2,1), c(3,2), c(2,3))
。也就是说,如果c(2,3)在此列表中,则希望返回TRUE,否则返回FALSE。 R是否有任何内置函数可以做到这一点?我可以为此构建一个函数,但是我很难相信几乎所有事物都是向量的语言都没有一种简单的方法来检查向量是否在向量列表中。
您可以使用
l = list(c(2,1), c(3,2), c(2,3))
x = c(3,2)
any(sapply(l, identical, x))
但是,要小心一点。 R的最新版本使用通过:
创建的向量的紧凑形式,其中仅存储末端成员,而不存储整个序列。因此:
identical(c(1,2,3), 1:3)
# [1] FALSE
为了安全起见,避免使用此方法,最好使用稍微冗长一些的语言
any(sapply(l, function(a,b) isTRUE(all.equal(a, b)), b=x))