gpt4 book ai didi

删除向量中的重复项但保留顺序

转载 作者:行者123 更新时间:2023-12-01 23:01:51 25 4
gpt4 key购买 nike

假设一个向量:

vec = c(NA,NA,1,NA,NA,NA,1,NA,NA,0,NA,NA,0,NA,NA,0,NA,NA,1,NA,NA,1,NA,NA,0,NA,0)

我想得到:
vec = c(NA,NA,1,NA,NA,NA,NA,NA,NA,0,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,0,NA,NA)

我已经尝试了一个带有 if 检查值是否等于前一个非 NA 的 for 循环,但是当它重复多次时它不起作用。

Remove duplicates in vector to next value
也不起作用,因为我想保留我的 NA。

最佳答案

使用 duplicated :

vec[duplicated(vec, incomparables=NA)] <- NA

您可以省略 incomparables您的示例中的参数:
vec[duplicated(vec)] <- NA

根据文档,这可能会更快,但您需要自己对其进行基准测试。

编辑:

澄清后:
vec <- c(NA,NA,1,NA,NA,NA,1,NA,NA,NA,NA,0,NA,NA,0,NA,NA,0,NA,NA,NA,1,NA,NA,1,NA,NA,0,NA,0)
vec2 <- c(NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,0,NA,NA)

tmp <- vec[!is.na(vec)]
tmp[c(FALSE, diff(tmp)==0)] <- NA
vec[!is.na(vec)] <- tmp

identical(vec, vec2)
#[1] TRUE

关于删除向量中的重复项但保留顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21303251/

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