Rのapplyの使い方
1897 ワード
R言語のapplyファミリー関数はCで書かれているため,applyを用いた遍歴の実行効率は自分で作成したループ文よりはるかに高い.
関数の説明
アプリの使い方は簡単です.
X:配列(array)です.つまり、入力は同じタイプのデータでなければなりません.数値型であるか、文字型である必要があります.ハイブリッドデータ型の
MARGIN:行(1)または列(2)に関数を適用することを示します.
FUN:でもRはmean、sumなどの関数を持っています.自分で書いた関数でもいいです.
単純なケース
まず、2行4列のマトリクスを作成します.
行ごとに平均を求める
に相当
列ごとに平均を求める
次のようになります.
PS:そこで私はMARGINの1がma[x,y]のx,MARGINの2が[x,y]のyに対応することを発見した.
ステップアップ:
使用法の説明では、
デフォルト:
パラメータ
ステップステップ:カスタム関数かすたむかんすう
Pythonは使い慣れているので、配列を巡り、複数の関数を組み合わせるときは、基本的に
次に、少し複雑な点の例を計算し、行ごとにループしてマトリクスの1列目に1を加え、1列目と2列目の平均値を計算し、各行を加算します.ツッコミ:私もなぜこれらの操作をするのか分かりませんが、関数をプレゼンテーションするために
関数の説明
アプリの使い方は簡単です.
apply(X, MARGIN, FUN, ...)
X:配列(array)です.つまり、入力は同じタイプのデータでなければなりません.数値型であるか、文字型である必要があります.ハイブリッドデータ型の
data.frame
であれば、as.matrix
でデータの強制変換を試みます.MARGIN:行(1)または列(2)に関数を適用することを示します.
FUN:でもRはmean、sumなどの関数を持っています.自分で書いた関数でもいいです.
...
:FUNの追加パラメータ単純なケース
まず、2行4列のマトリクスを作成します.
ma ma
[,1] [,2] [,3] [,4]
[1,] 1 3 1 7
[2,] 2 4 6 8
行ごとに平均を求める
> apply(ma,1,mean)
[1] 3 5
に相当
mean(ma[1,]) # 3
mean(ma[2,]) # 5
列ごとに平均を求める
> apply(ma,2,mean)
[1] 1.5 3.5 3.5 7.5
次のようになります.
mean(ma[,1]) # 1.5
mean(ma[,2]) # 3.5
...
PS:そこで私はMARGINの1がma[x,y]のx,MARGINの2が[x,y]のyに対応することを発見した.
ステップアップ:
...
の役割使用法の説明では、
...
は、関数に追加のパラメータを提供するのに適している.具体的には、1つの関数に複数のパラメータがある場合、...
は、1つのパラメータ以外のパラメータの入力を担当する.例えばmean(x, trim = 0, na.rm = FALSE, ...)
には、na値をどのように処理するかのパラメータがあります.# NA
> ma[1,1] ma
[,1] [,2] [,3] [,4]
[1,] NA 3 1 7
[2,] 2 4 6 8
デフォルト:
> apply(ma,1,mean)
[1] NA 5
パラメータ
na.rm=TRUE
を追加> apply(ma,1,mean,na.rm=TRUE)
[1] 3.666667 5.000000
ステップステップ:カスタム関数かすたむかんすう
Pythonは使い慣れているので、配列を巡り、複数の関数を組み合わせるときは、基本的に
for
サイクルを考えます.Rにループを書くのは非常に非効率なので、できるだけapplyを使います.1サイクルで複数の演算に触れると,Rで直接関数を持ち込むことは不可能である.しかし、applyでは自分で関数を作ることができます.次に、少し複雑な点の例を計算し、行ごとにループしてマトリクスの1列目に1を加え、1列目と2列目の平均値を計算し、各行を加算します.ツッコミ:私もなぜこれらの操作をするのか分かりませんが、関数をプレゼンテーションするために
ma
[,1] [,2] [,3] [,4]
[1,] 1 3 1 7
[2,] 2 4 6 8
myfunc