非常具体的问题......但这里就是了。在for()循环中嵌套的ifelse()...语法错误?
我有一个指示热变化的数据矢量,并且从中想知道是否已经切换了'ON'或'OFF'。这总是开始'OFF'。 +1.5度的阈值表示它已经被切换为“开”,并且一直保持到-1.5度的阈值表示其已经被再次切换为“关”,在+/-之间变化较小时达到高或低平稳。我有一个正值和负值的数值向量,我希望在适当的位置将其转换为字符或因子,并且级别为'ON'和'OFF'。
使用该:
> Data$delta
[1] 0.02 0.00 0.04 -0.06 -0.06 -0.02 0.01 0.31 0.22 0.21 -0.09 -0.02 0.03 0.02 0.01
[16] 0.00 0.02 0.03 0.03 0.04 0.04 0.01 0.00 0.01 0.02 0.05 0.04 0.04 0.01 0.04
[31] 0.02 0.01 -0.03 0.00 0.03 0.03 0.03 0.04 0.04 0.02 0.02 0.01 0.02 -0.02 -0.01
[46] -0.03 0.01 0.03 0.37 0.14 0.04 -0.34 -0.15 -0.07 0.00 0.01 0.29 0.03 0.26 -0.12
[61] 0.05 -0.02 -0.03 0.10 -0.11 -0.01 -0.07 -0.03 -0.01 0.01 0.30 0.12 0.05 -0.25 -0.06
[76] -0.04 -0.04 -0.07 -0.02 0.01 0.04 0.02 0.03 -0.07 -0.12 -0.18 -0.12 -0.08 -0.05 -0.04
[91] 0.34 2.99 4.29 5.00 1.83 -0.51 -1.63 -0.33 2.62 -0.38
我创建一个空的载体来接收for()循环输出和插入 'OFF' 作为开关总是与 'OFF'
我开始然后创建我嵌套的ifelse()for()循环,考虑到Data $ switch的第1行已经完成...
> for(i in (2:(length(Data$delta))))
{ ifelse(Data$switch[1:((length(Data$switch))-1)] == "OFF",
(ifelse (Data$delta[i] < 1.5 , Data$switch[i] <- "OFF", Data$switch[i] <- "ON")),
(ifelse (Data$delta[i] > {-1.5} , Data$switch[i] <- "ON", Data$switch[i] <- "OFF")))
}
它返回......
> Data$switch
[1] "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF"
[16] "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF"
[31] "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF"
[46] "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF"
[61] "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF"
[76] "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF" "OFF"
[91] "OFF" "ON" "ON" "ON" "ON" "ON" "OFF" "ON" "ON" "ON"
所有显示正常...除了值98,这不应该切换到“ON”与delta只有“-0.33”。在一个较大的数据集上,这些数据似乎是从OFF到ON的常规虚假变化,值为< 1.5?我已经以多种形式再次尝试过这种语法,但这些都不是更好。任何人都可以帮助确定问题吗?数据$增量是一个数字向量。
值97和98有一个标志:-1.63 \ ** - 0.33 \ **并将被视为字符。我的代码中没有看到as.numeric,但会将这些值设置为NA。 – Henk
@亨克......对不起,国旗不是一面旗帜,我试图用粗体字来表示这个观点。我将改变这个 – Roasty247