gpt4 book ai didi

r - 当向量的项不匹配时使用 which 和 %in%

转载 作者:行者123 更新时间:2023-12-04 12:06:58 25 4
gpt4 key购买 nike

假设我有三个向量,我想比较它们以查看每个向量的元素不在其他向量中,首先要与“c”进行比较。

a<-c(1,2,7,8)
b<-c(1,2,3,4)
c<-c(3,4,5,6)

所以这就像我期望的那样工作(1 和 2 在“b”中,但不在“c”中)

b[-which(b%in%c)]

返回:

[1] 1 2

但这并没有告诉我哪个“a”不在“c”中(全部,即 1,2,7,8),而是给了我一个没有任何内容的数字向量。

a[-which(a%in%c)]

返回:

integer(0)

看起来像 this answer最终会做我想做的事,但是我对 which%in% 的使用方式有什么误解?更好的是,我如何得到答案

[1] 1 2 7 8

当没有一个“a”在“c”中时,哪个“a”不在“c”中?

最佳答案

使用逻辑运算更可靠:

b[!b %in% c]
# [1] 1 2
a[!a %in% c]
# [1] 1 2 7 8

请注意,!a %in% c!(a %in% c) 相同。这样我们问a中的哪一个在c中,得到一个逻辑结果,取反。另一方面,使用 which 的工作方式不同:在 -which(a %in% c) 中,我们还首先得到一个逻辑向量 a %in% c 然后 which 给出 a 中属于 c 的元素的 indices,然后摆脱那些元素。在你的情况下,我们有

which(a %in% c)
# integer(0)

那么你可能会争辩说 a[-numeric(0)] 也应该返回

# [1] 1 2 7 8

但在 R 中不是这样。

关于r - 当向量的项不匹配时使用 which 和 %in%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53834767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com