条件付きで縦線を折れ線グラフにプロットしようとしています。私はベースのRグラフィックスで作業しています。
データを取り出すデータフレームはRW1と呼ばれ、同じプロットの2つのy軸にRW1の2つの変数をプロットしました。 2718の観測があります。
ここでは、 "RW1 $ Measured_CH1_CTT"の標準偏差に依存する垂直に配置された灰色の影付きバーを追加したいと思います。この変数は、左のy軸(側面2)にプロットされます。すなわち、連続する8回の観測における標準偏差が0.5以下である場合には、これらの観測値に対して垂直バーをプロットしなければならない。
私はこれをforループと組み込みのif文で記述しようとしていますが、少し苦労しています。これまでに私が得たものがここにあります。Rプロット - ネストされたforループを含む垂直に網掛けされたバー
# Set values outside loop
xi <- 0
xj <- 0
n <- nrow(RW1)
# Run the loop
for (i in 1:n) {
for (j in min(i+8, n-i))
Measured_CH1_CTT = RW1$Measured_CH1_CTT[i:(i+j)]
if (sd(Measured_CH1_CTT <= 0.5)) {
xi <- i
xj <- j
rect(xleft = xi, xright = xj, ybottom = -0.6, ytop = 0.6, density = 100, col = "grey")
}
}
臨界点は
- 各区間(j)の終点のdefintionあります。 jは各出発点iからの8回の観測でなければならないが、私は8回の観測が長い間隔で「nの上のヒント」を防止しなければならない。これは、n = 2718-7 = 2711
- のxleftとxrightの定義で、それぞれの間隔の開始点と終了点の定義で、 "Measured_CH1_CTT"のequalのif条件を満たすifが関心事になります0.5文以下にする。
- if文。 Rは私に "引数は論理的であると解釈できません"というエラーを表示します。
- ytopとybottom:2つあるのでy軸を指定しますか?私はちょうどそれが左のもの(サイド2)であり、その軸の範囲を示していると推測していた。
何か提案のために乾杯!
EDIT:変数に欠損値があるため、parantheses内にna.rm引数を指定し、 'lower than equal to'式を正しく配置しました:if (sd(Measured_CH1_CTT, na.rm = TRUE) <= 0.5)
。 if文の別のエラーはmissing value where TRUE/FALSE needed
になります。
要点は、間隔の定義やxi
とxj
の割り当てのどこかにある必要があります。私はif()
の機能を(別の簡単な表現で)独立して実行しています。同様に、rect()
関数は、手動でxleft
とxright
を指定すると機能します。
ifステートメントでかっこが間違っているようです。私はあなたが 'if(sd(Measured_CH1_CTT)<= 0.5)'を望んでいると思う。 – G5W
ええ、ほんの数秒前に気付いた。それを実行しようとしましたが、Rは私に別のエラー "TRUE/FALSEが必要なところに値がありません"を返します –
多分else文を指定する必要があります。 if条件が満たされない場合は、ループを放棄します。 'else {next} 'でそれをしましたが、私はまだ' TRUE/FALSE needed'が必要な 'missing value'という同じエラーを受け取ります –