gpt4 book ai didi

r - 从第一次出现 Pattern 到结束设置值 NA

转载 作者:行者123 更新时间:2023-12-04 10:16:10 25 4
gpt4 key购买 nike

是否有更快/更短的方法来设置值,包括匹配到 NA 之后?

vec <- 1:10;vec[c(3,5,7)]<-c(NA,NaN,"remove")
#"1" "2" NA "4" "NaN" "6" "remove" "8" "9" "10"

期望的结果:

#"1"      "2"      NA       "4"      "NaN"    "6"      NA       NA       NA       NA

我的代码:

vec[{grep("^remove$",vec)[1]}:length(vec)]<-NA

请注意:

在那种情况下,我们假设会有一个突出的“删除”元素。因此解决方案不必处理没有任何问题的情况。

最佳答案

您可以使用 match 在找到第一个匹配项后停止搜索:

m = match("remove", vec) - 1L
if (is.na(m)){
vec
} else {
c(head(vec, m), rep(vec[NA_integer_], length(vec)-m))
}

不过,我猜你必须有一个相当大的矢量才能注意到速度差异。或者,这可能会更快:

m = match("remove", vec)
if (!is.na(m)){
vec[m:length(vec)] <- NA
}

关于r - 从第一次出现 Pattern 到结束设置值 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51710444/

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