删除向量中指定的元素(借助向量中元素索引)

在进行数据处理的过程中,可能会要求删除向量中某个指定的元素,这一操作可以利用R 语言向量中每个元素都对应一个索引完成,而获取索引下标可以利用which(),而match()只会返向量中第一次出现的...

在进行数据处理的过程中,可能会要求删除向量中某个指定的元素,这一操作可以利用R 语言向量中每个元素都对应一个索引完成,而获取索引下标可以利用which(),而match()只会返向量中第一次出现的元素索引下标,而相同元素第二次出现的索引下标不会出现。


例如打算从向量A中删除元素"a",用match()只获得了它第一次出现的索引下标,用which()获得全部"a"的索引下标。

> A=c("a","c","e","b","d","a","b","d","f","e","g")
> match("a",A)
[1] 1
> match(c("a"),A)
[1] 1
> which(A=="a")
[1] 1 6

而删除的操作仅需要进行在向量中写入负的索引下标即可,如删除所有的"a":

> B=A[-which(A=="a")]
> B
[1] "c" "e" "b" "d" "b" "d" "f" "e" "g"

如果是想删除多个元素,可以用循环来完成

> C=A
> a=c("a","b","g")
for(i in a){C=C[-which(C==i)]}
> C
[1] "c" "e" "d" "d" "f" "e"




  • 发表于 2018-07-16 18:05
  • 阅读 ( 9908 )
  • 分类:R

0 条评论

请先 登录 后评论
Daitoue
Daitoue

167 篇文章

作家榜 »

  1. omicsgene 698 文章
  2. 安生水 347 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. xun 82 文章
  6. 红橙子 78 文章
  7. rzx 74 文章
  8. CORNERSTONE 72 文章