[解決済み] dplyrを使用して、テーブルの各行に関数を適用しますか?
2022-06-20 09:14:33
質問
で作業する場合
plyr
を使うのが便利だと思うことがよくありました。
adply
を使うのが便利です。
など。
data(iris)
library(plyr)
head(
adply(iris, 1, transform , Max.Len= max(Sepal.Length,Petal.Length))
)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species Max.Len
1 5.1 3.5 1.4 0.2 setosa 5.1
2 4.9 3.0 1.4 0.2 setosa 4.9
3 4.7 3.2 1.3 0.2 setosa 4.7
4 4.6 3.1 1.5 0.2 setosa 4.6
5 5.0 3.6 1.4 0.2 setosa 5.0
6 5.4 3.9 1.7 0.4 setosa 5.4
今、私は
dplyr
を使うようになったのですが、これを整理して自然に行う方法はないでしょうか?これは
ではありません。
であり、私が望むものではありません。
library(dplyr)
head(
mutate(iris, Max.Len= max(Sepal.Length,Petal.Length))
)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species Max.Len
1 5.1 3.5 1.4 0.2 setosa 7.9
2 4.9 3.0 1.4 0.2 setosa 7.9
3 4.7 3.2 1.3 0.2 setosa 7.9
4 4.6 3.1 1.5 0.2 setosa 7.9
5 5.0 3.6 1.4 0.2 setosa 7.9
6 5.4 3.9 1.7 0.4 setosa 7.9
どのように解決するのですか?
dplyr 0.2時点(だと思う)で
rowwise()
が実装されているので、この問題の答えはこうなります。
iris %>%
rowwise() %>%
mutate(Max.Len= max(Sepal.Length,Petal.Length))
非対応
rowwise
代替
5年後(!)、この回答はまだ多くのトラフィックを獲得しています。それが与えられたので
rowwise
はますます推奨されなくなりましたが、多くの人が直感的に使えると思っているようです。自分自身のために、Jenny Bryan の
Rでtidyverseを使った行指向のワークフロー
を読んで、このトピックについてよく理解してください。
私が見つけた最も簡単な方法は、Hadleyの例の1つである
pmap
:
iris %>%
mutate(Max.Len= purrr::pmap_dbl(list(Sepal.Length, Petal.Length), max))
この方法を用いると、関数に任意の数の引数を与えることができます (
.f
) の内部で
pmap
.
pmap
は良い概念的アプローチです。なぜなら、行単位の操作を行っているとき、実際にはベクトル(データフレームの列)のリストからタプルを操作しているという事実を反映しているからです。
関連
-
R 描画エラー plot.new() : 図形の余白が大きすぎる
-
R: hclust(d, method = method)でのエラー : 外部関数呼び出しは NA/NaN/Inf(arg10) を持つことができません。
-
R read.table Error:埋め込まれたヌルが含まれているようです。
-
データボックス内の行/列の削除/追加を行うR言語
-
R言語ダウンロード機能 download.fileとダウンロード解析
-
[解決済み] データフレームのリストを行単位で1つのデータフレームに結合する
-
[解決済み] ggplot2 を使って 2 つの変数を同じグラフに線でプロットする
-
[解決済み] Rで文字列から最後のn文字を抽出する
-
[解決済み】自作関数を書くときにRの省略機能を使うには?
-
[解決済み] テーブルをデータフレームに変換する方法
最新
-
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でファイルを読み込む際に、そのようなファイルまたはディレクトリが見つかりません。
-
R言語です。「接続を開くことができません」解決策
-
DEG解析で'row.names'に重複した名前を付けられない場合の解決法
-
Rのexpand.grid()コマンド
-
[解決済み] xkcd風のグラフを作るには?
-
[解決済み] パッケージ 'xxx' は利用できません (for R version x.y.z) 」という警告にどのように対処したらよいですか?
-
[解決済み] 不足しているパッケージをチェックし、インストールするためのエレガントな方法?
-
[解決済み】R関数でオプション引数を指定する "正しい "方法
-
[解決済み] データフレームの各行に対して、各行からの複数の引数でapplyのような関数を呼び出す
-
[解決済み] dplyrで複数列の和を求める