case_when関数で「Case 1 (`x`) must be a two-sided formula」のエラーが発生する

カスタム R コマンドで case_when() を使った際に以下のエラーが出る場合があります。

Error in dplyr::case_when(x, …) :
Case 1 (x) must be a two-sided formula, not a <tbl_df/tbl/data.frame> object.

このエラーは、case_when の条件式 の書き方ではなく、case_when をデータフレームに直接適用していることが原因です。case_when() は「条件 ~ 値」の formula を引数に取る関数で、データフレームを第一引数に渡すことはできません。

例: エラーになる書き方

case_when(  ID == "A" ~ as.Date("2026-05-18"),  ID == "B" ~ as.Date("2026-05-17"),  TRUE ~ データ取得日)

例: 正しい書き方 (mutate で囲む)

mutate(  日付 = case_when(    ID == "A" ~ as.Date("2026-05-18"),    ID == "B" ~ as.Date("2026-05-17"),    TRUE ~ データ取得日  ))

mutate(列名 = case_when(...)) の形にすることで、case_when の結果が「日付」列として元データに追加されます。