1. ホーム
  2. r

[解決済み] R パイプ演算子 %>% 使用時の条件付き評価

2022-09-19 12:58:30

質問

パイプ演算子 %>% のようなパッケージで dplyr , ggvis , dycharts など、条件付きでステップを実行するにはどうしたらよいでしょうか?例えば

step_1 %>%
step_2 %>%

if(condition)
step_3

これらのアプローチではうまくいかないようです。

step_1 %>%
step_2 
if(condition) %>% step_3

step_1 %>%
step_2 %>%
if(condition) step_3

長い道のりがある。

if(condition)
{
step_1 %>%
step_2 
}else{
step_1 %>%
step_2 %>%
step_3
}

冗長性を排除した良い方法はないでしょうか?

どのように解決するのですか?

以下は、この例では .ifelse :

X<-1
Y<-T

X %>% add(1) %>% { ifelse(Y ,add(.,1), . ) }

の中で ifelse であれば、もし YTRUE の最後の値を返すだけです。 X . また . は関数にチェーンの前のステップからの出力の行き先を伝える代物なので、両方のブランチで使用することができます。

編集 BenBolker が指摘するように、あなたは ifelse は必要ないかもしれないので、ここでは if のバージョンです。

X %>% 
add(1) %>% 
 {if(Y) add(.,1) else .}

を使うべきであると指摘してくれた @Frank に感謝します。 { 中括弧で囲んで ififelse ステートメントで連鎖を続けることができます。