Rのmutate()で、case_when中にfor文をいれたい
解決したいこと
Rのdplyr::mutate()で、case_whenにより条件分けしている中にfor文を入れることは可能でしょうか。
状況
Rでデータ編集を行なっています。
以下のコードで結果を得ることはできているのですが、for文を使って簡略化することは可能でしょうか。
STARTとENDは範囲を示す数値であり、
「1のSTARTからENDの範囲内であれば、1のANSWERを出力、以下2以降を繰り返し」というような条件付けです。
(以下のコードでは条件4つにしていますが、実際には条件50以上あり、なんとか簡略化したいです、、)
結果は出るが、煩雑なコード
df %>%
mutate(newcol= case_when(
POS >= data_base[[1, "START"]] &
POS <= data_base[[1, "END"]] ~ data_base[[1, "ANSWER"]],
POS >= data_base[[2, "START"]] &
POS <= data_base[[2, "END"]] ~ data_base[[2, "ANSWER"]],
POS >= data_base[[3, "START"]] &
POS <= data_base[[3, "END"]] ~ data_base[[3, "ANSWER"]],
POS >= data_base[[4, "START"]] &
POS <= data_base[[4, "END"]] ~ data_base[[4, "ANSWER"]],
TRUE ~ NA
)) -> df_v2
以下のようにfor文を試してみましたが、これでは出力された結果が最後の4つ目の条件付けのもののみとなってしまいました。
for文を入れる位置がポイントのように思うのですが、他の場所ではエラーが出てしまっています。
for文を試すが、思うような結果が得られないコード
for (i in 1:4){df %>% mutate(
newcol= case_when(
POS >= data_base[[i, "START"]] &
POS <= data_base[[i, "END"]] ~ data_base[[i, "ANSWER"]],
TRUE ~ NA
))} -> df_v2
適切なコード等ありましたら、教えて頂けますと幸いです。よろしくお願いいたします。
0