gpt4 book ai didi

r - 为 TRUE 值定义一个 "buffer",如果在 "buffer"内,则将 TRUE 转换为 FALSE

转载 作者:行者123 更新时间:2023-12-03 05:22:26 30 4
gpt4 key购买 nike

缓冲区表示TRUETRUE之后之后的最小位置,其中没有TRUE可以生存。

数据:

vec <- as.logical(c(1,0,1,1,1,0,1,1,0,1))

#[1] TRUE FALSE TRUE TRUE TRUE FALSE TRUE TRUE FALSE TRUE

不同缓冲区编号的示例:

buffer = 1
#[1] TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE FALSE TRUE

buffer = 2
#[1] TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE

最后

buffer = 3
#[1] TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE

最佳答案

可能有更好的方法,但这里有一个选项,循环遍历 vecTRUE 值:

changeTRUE <- function(vec, buffer){
first_TRUE <- which(vec)[1] # get the first TRUE value index
i <- 1 # just so we can move on other TRUE values later
while(first_TRUE < length(vec)){ # while there are some TRUE
vec[(first_TRUE+1):min((first_TRUE+buffer), length(vec))] <- FALSE # put FALSE after the TRUE value according to buffer value (but not further than the end of vec)
i <- i+1 # to go to next TRUE
first_TRUE <- which(vec)[i] # get next TRUE index...
}
return(vec)
}

changeTRUE(vec, 1)
[1] TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE FALSE TRUE
changeTRUE(vec, 2)
[1] TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE
changeTRUE(vec, 3)
[1] TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE

关于r - 为 TRUE 值定义一个 "buffer",如果在 "buffer"内,则将 TRUE 转换为 FALSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53499885/

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