首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安全、优雅地将特定元素从载体中丢弃。

安全、优雅地将特定元素从载体中丢弃。
EN

Stack Overflow用户
提问于 2022-03-04 16:22:54
回答 1查看 35关注 0票数 2

我想从向量中排除指定列表中的元素,即删除该向量中出现在排除列表中的元素。

我不知道元素是否已经丢失,因此通过-which(v %in% excludes)删除元素将导致整个向量在没有出现在该向量的情况下被清除。

我怎样才能以一种安全而优雅的方式做到这一点呢?我是否应该使用布尔(logical)掩码,或者是否有一种更优雅的方法?

代码语言:javascript
复制
v <- c("things", "sometimes", "go", "awry", "quickly")
excludes <- c("sometimes", "quickly")

v <- v[-which(v %in% excludes)]
v
# "things" "go"     "awry" 

which(v %in% excludes)

# Here `excludes` has already been removed, so v is cleared
v <- v[-which(v %in% excludes)]
v
# character(0)

布尔掩码法

代码语言:javascript
复制
v <- c("things", "sometimes", "go", "awry", "quickly")
excludes <- c("sometimes", "quickly")
v <- v[!v %in% excludes]
v <- v[!v %in% excludes] # perform the removal a second time
v # contains desired value
# "things" "go"     "awry"  
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-04 16:23:42

如果没有副本,请使用setdiff

代码语言:javascript
复制
setdiff(v, excludes)
[1] "things" "go"     "awry"  

或者有重复的,vsetdiff

代码语言:javascript
复制
library(vecsets)
vsetdiff(v, excludes)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71354272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档