【发布时间】:2020-03-28 23:03:37
【问题描述】:
我正在尝试计算向量中相似连续数字的“块”。但是当我期望它输入“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 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
谢谢!
【问题讨论】:
-
在您的函数中,您已将“y”预分配给单个值。
-
即使我不这样做,也会发生同样的事情
-
i+1和length(x)是问题 -
怎么样?我如何告诉 if/then 语句检查 i 值与它旁边的值?
-
for (i in length(x))lengthof 'x' 只是一个值
标签: r for-loop if-statement