简单的嵌套 for 循环问题

Simple nested for loop issue

在尝试在大型数据帧中实现嵌套 for 循环时,我意识到嵌套 for 循环没有产生我期望的结果。这是我的问题的摘录。

df <- data.frame(nrow = 20, ncol = 1)
df <- data.frame(  LastPrice = c( 1221, 1220, 1220, 1217, 1216,  1218 , 1216, 1216, 1217, 1220, 1219, 1218, 1220, 1216, 1217, 1218, 1218, 1207, 1206, 1205))
for(j in 1:20) {for (i in 1:10) {df$SignalBinary[j] <- ifelse (df$LastPrice[j+i] == 1216, 1, 0)}}

我期望并希望嵌套的 for 循环将 SignalBinary 向量添加到具有以下值的 df 数据帧:“1 1 1 1 1 1 1 1 1 1 NA NA NA NA NA NA NA NA NA NA”

相反,df$SignalBinary 变为 “0 0 0 1 0 0 0 0 0 0 NA NA NA NA NA NA NA NA NA”

不明白。为什么只注册一个1216?非常感谢!

你忘记在第二个循环中总结,所以它只在最后一个 i 是 2016 时才匹配。试试这个:

for(j in 1:20) {
    tmp <- 0
    for (i in 1:10) 
        tmp <- tmp + ifelse(df$LastPrice[j+i] == 1216, 1, 0)
    df$SignalBinary[j] <- as.integer(tmp>0)
}

或者没有临时变量:

df$SignalBinary[j] <- 0
for(j in 1:20) {
    for(i in 1:10) 
        df$SignalBinary[j] <- as.integer(df$SignalBinary[j] || ifelse (df$LastPrice[j+i] == 1216, 1, 0));
        }