[解決済み] 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
であれば、もし
Y
は
TRUE
の最後の値を返すだけです。
X
. また
.
は関数にチェーンの前のステップからの出力の行き先を伝える代物なので、両方のブランチで使用することができます。
編集
BenBolker が指摘するように、あなたは
ifelse
は必要ないかもしれないので、ここでは
if
のバージョンです。
X %>%
add(1) %>%
{if(Y) add(.,1) else .}
を使うべきであると指摘してくれた @Frank に感謝します。
{
中括弧で囲んで
if
と
ifelse
ステートメントで連鎖を続けることができます。
関連
-
R - よくあるエラーとその原因 - 注意事項
-
[R] is.data.frame(x) のエラー : (リスト) オブジェクトを 'double' 型に強制できない。
-
[解決済み] Rの二乗偏差の総和の算出
-
[解決済み] Rでcは何をするのですか?重複] [重複
-
[解決済み] Rで2つのグラフを同じプロットで表示する
-
[解決済み] Rで文字列から最後のn文字を抽出する
-
[解決済み】data.table vs dplyr:一方がうまくできない、またはうまくできないことを行うことができますか?
-
[解決済み】RでCRANミラーを選択する方法
-
[解決済み] データフレームのカラムのデータ型を決定する
-
[解決済み] R: 自作パッケージで magrittr パイプ演算子を使用する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
R: エラー: $ 演算子は原子ベクトルに対して無効です。
-
ggplot2 からグリッドと背景色を削除する。
-
Rの警告 "条件の長さが1より大きいので、最初の要素しか使えない "に対する解決策
-
[解決済み] HTML、PDF、DOCXで見栄えのするシンプルな手動のRMarkdownテーブル
-
[解決済み] Rでcは何をするのですか?重複] [重複
-
[解決済み] R:自然対数を使った方程式をnlsで使う
-
[解決済み] グループ化関数(tapply、by、aggregate)と*applyファミリ
-
[解決済み] 不足しているパッケージをチェックし、インストールするためのエレガントな方法?
-
[解決済み] R および RStudio のコンソールをクリアする関数
-
[解決済み] ggplot2 の棒グラフで棒を並べる