gpt4 book ai didi

R ifelse 抽出 NA

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

我正在尝试计算向量中相似连续数字的“ block ”。但是当我期望它输入“1”或“0”时,我的代码会吐回“NA”

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

turing <- function(x){
y <- c(0)
for (i in length(x)){
ifelse(isTRUE(x[i] == x[i+1]), y[i]<-0, y[i]<-1)
}
y
}
turing(x)

这吐出来了[1] 0 NA NA NA NA NA NA 1

编辑:以下似乎工作正常:

turing <- function(x){
y <- numeric(length(x))
for (i in seq_along(x)){
ifelse(isTRUE(x[i] == x[i+1]), y[i] <-0 , y[i] <- 1)
}
y
}

当它吐出来的时候0 1 1 0 0 1 0 1 1谢谢!

最佳答案

如果我们需要一个计数序列,可以使用 data.table

中的 rleid
library(data.table)
rleid(x)

或使用 base R

中的 rle
with(rle(x), rep(seq_along(values), lengths))

使用OP的代码,可以将'y'预先分配为length等于x长度的向量,然后循环'x'的序列(而不是'length'作为长度只是一个数字),然后执行 if/else (ifelse 是矢量化选项,因为我们在循环中执行此操作 if/else 只需要)

turing <- function(x){
y <- numeric(length(x))
for (i in seq_along(x)){
if(i < length(x)) {
if(x[i] == x[i+1]) {
y[i]<-0
} else y[i]<-1
}}
y[length(y)] <- 1

y
}

turing(x)
#[1] 0 1 1 0 0 1 0 1 1

关于R ifelse 抽出 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60908096/

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