在进行数据处理的过程中,可能会要求删除向量中某个指定的元素,这一操作可以利用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"
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!