简单的嵌套 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”
- 前 10 行为“1”,因为在下面的 10 行中至少有一行存在 1216
- "NA" 在接下来的 10 上,因为对于那些 i 循环延伸到矢量长度之外
相反,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));
}
在尝试在大型数据帧中实现嵌套 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”
- 前 10 行为“1”,因为在下面的 10 行中至少有一行存在 1216
- "NA" 在接下来的 10 上,因为对于那些 i 循环延伸到矢量长度之外
相反,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));
}