データテーブルで行ごとの論理演算を実行する必要があります。これを例で説明しましょう。以下に示すようなデータテーブル(DT)があるとします
V1 V2 V3 V4 V5
AAE CDG 2 0 0
AAE CDG 2 5 5
AAE ORY 2 4 4
AAE ORY 2 0 0
AAE ORY 2 5 5
AAE ORY 2 3 3
ここで、V5 の値に応じて、V6 列をデータ テーブルに追加します。これは論理演算です。私はそれをするためにこのようなことをしました-
DT[, V6 := if(V5 == 0){1
}else if(V5 == 1){2
}else if(V5 == 2){3
}else if(V5 == 3){4
}else if(V5 == 4){5
}else if(V5 == 5){6}
]
しかし、これでは望ましい結果が得られません。
V1 V2 V3 V4 V5 V6
AAE CDG 2 0 0 1
AAE CDG 2 5 5 6
AAE ORY 2 4 4 5
AAE ORY 2 0 0 1
AAE ORY 2 5 5 6
AAE ORY 2 3 3 4
一方、次の結果が得られます-
V1 V2 V3 V4 V5 V6
AAE CDG 2 0 0 1
AAE CDG 2 5 5 1
AAE ORY 2 4 4 1
AAE ORY 2 0 0 1
AAE ORY 2 5 5 1
AAE ORY 2 3 3 1
これは、一度に 1 つの値または行の値を動的に使用するのではなく、V5 の最初の値 (0) が論理演算で使用されるために発生します。[,J] 引数を変更して目的の結果を得るにはどうすればよいですか。for ループを使用してこれを行うことができますが、それは非常に非効率的な方法です。