gpt4 book ai didi

r - 如何在 R 中构造这个二进制变量?

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

目的是检查索引 i 处的值是否为 1,然后将前六个条目设为 1。

x <- c(0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1)

## Required output
y <- c(1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1)

## Attempt
for(j in seq_along(x)){
if(x[j] == 1){
for(i in (j-6):j)
x[i] = 1
}}

你能帮助解决这个或更好的方法吗?

谢谢。

最佳答案

使用 filter 的完全矢量化解决方案:

as.integer( #turn logical value into numbers
as.logical( #coerce to logical --> 0 becomes FALSE, everything else TRUE
rev( #reverse order
filter( #linear filtering
c(rep(0, 6), #pad with zeros in the beginning to avoid NAs
rev(x)), #revers order of input vector
c(rep(1, 7)), sides=1 #y_i = x_i * 1 + x_(i-1) * 1 +...+ x_(i-6) * 1
)[-(1:6)]))) #remove NA values

#[1] 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1

关于r - 如何在 R 中构造这个二进制变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26908804/

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