これは、次の場所にある以前の質問に関連しています。
以下はデータです。
DT <- data.table(a = sample(c("C","M","Y","K"), 100, rep=TRUE),
b = sample(c("A","S"), 100, rep=TRUE),
f = round(rnorm(n=100, mean=.90, sd=.08),digits = 2) ); DT
次の関数について、エレガントで簡潔な書き直しをお願いします。
`%between%` <- function(x, vals) { x >= vals[1] & x <= vals[2]}
`%nbetween%` <- Negate(`%between%`)
次のスクリプトは、特定の条件を満たす特定の値を NA に置き換えます。
DT[a == "C" & b %in% c("A", "S") & f %nbetween% c(.85, .95), f := NA]
DT[a == "M" & b %in% c("A", "S") & f %nbetween% c(.85, .95), f := NA]
DT[a == "Y" & b %in% c("A", "S") & f %nbetween% c(.80, .90), f := NA]
DT[a == "K" & b %in% c("A", "S") & f %nbetween% c(.95, 1.10), f := NA]