作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个向量:
a = c(1,1,2,2,3,3,4,4)
b = c(1)
我想从a
中删除b
的第一个 匹配项。因此,这里只有第一个 1
从 a
中移除:
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/
我是一名优秀的程序员,十分优秀!