gpt4 book ai didi

r - 如何从另一个向量中删除一个向量中的项目

转载 作者:行者123 更新时间:2023-12-02 05:57:03 26 4
gpt4 key购买 nike

我有两个向量:

a = c(1,1,2,2,3,3,4,4) 
b = c(1)

我想从a 中删除b第一个 匹配项。因此,这里只有第一个 1a 中移除:

c = c(1,2,2,3,3,4,4)

a 中项目的顺序并不重要。

我试过这段代码:

a[a != b]
a[! a %in% b]

两个结果都是:

[1] 2 2 3 3 4 4.

所有数字 1 都被删除。但是,我只想从 a 中删除 b 中的特定项。

如果b = c(1, 1, 2),那么我希望结果

[1] 2 3 3 4 4

a[-(1:3)]

以上代码可能导致结果[1] 2 3 3 4 4。但是,我希望它可以更灵活。例如,当项目的顺序未知或随机时:

a = c(3,4,3,1,2,2,1,4)

我如何使用 R 来做到这一点?

最佳答案

vecsets 包可以执行标准的集合操作,同时保留重复项:

vecsets::vsetdiff( c(1,1,2,2,3,3,4,4), c(1) )
## [1] 1 2 2 3 3 4 4

vecsets::vsetdiff( c(1,1,2,2,3,3,4,4), c(1,1,2) )
## [1] 2 3 3 4 4

请注意,它将保留第一个参数的顺序。使用你的最后一个例子:

vecsets::vsetdiff( c(3,4,3,1,2,2,1,4), c(1,1,2) )
## [1] 3 4 3 2 4

关于r - 如何从另一个向量中删除一个向量中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49488966/

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