著者のメッセージ:強力なの家族を適用し、実用的には、R言語は、ループを使用しないでください、ループの多くを置き換えることができます。
オリジナルリンク: https://blog.csdn.net/sinat_26917383/article/details/51086663
関数名機能は
動作、加算、いくつかの他の公共の平均単純な算術の行と列を適用する
機能は、テーブルの上に追加適用tapply =表は、結合グループの要約テーブルであることを適用する、パケットをまとめることができる
=リストデータフレームフォーマットのニーズを適用lapplyリストのリストの使用を返す依然として、リストと組み合わせて使用することができる
sapply = =非公開に(lapply適用簡略化 ) データフレームフォーマットは、リストと組み合わせることが必要であるlapplyマトリックスとして返されるかもしれないが、出力行列形式
適用します
アレイの余白以上の関数を適用します
行または列関数の配列を使用
適用(X、MARGIN、FUN、...)
lapply
リストまたはベクトル上で関数を適用
リストやベクトル関数を使用します
lapply(X、FUN、...)
sapply
リストまたはベクトル上で関数を適用
リストやベクトル関数を使用します
sapply(X、FUN、...、TRUE =簡素化、USE.NAMES = TRUE)
vapply
リストまたはベクトル上で関数を適用
リストやベクトル関数を使用します
vapply(X、FUN、FUN.VALUE、...、USE.NAMES = TRUE)
tapply
ラグドアレイの上に関数を適用
関数を使用して、不規則なアレイ
tapply(X、INDEX、FUN = NULL、...、= TRUEを簡素化)
eapply
環境での値に対して関数を適用
環境では、関数の値を使用して
eapply(ENV、FUN、...、all.names = FALSE、USE.NAMES = TRUE)
mapply
複数のリストまたはベクトル引数に関数を適用
関数またはベクトル・パラメータ・リストを使用する複数の
mapply(FUN、...、MoreArgs = NULL、簡素化= TRUE、USE.NAMES = TRUE)
rapply
再帰的にリストに関数を適用
リストを生成するために再帰関数を使用しました
rapply(オブジェクト、F、クラスは= "ANY"、DEFLT = NULL、どのように=のC( "非公開に"、 "置換"、 "リスト")、...)
図1に示すように、関数を適用する
行によって、またはアレイにより、垂直方向と水平方向の計算(等和、平均)の行列の行を計算します
前記適用、行2列に等しい、1に等しいです。
> MA < -マトリックス(C(1:4、1、6:8)、nrow = 2)
> MA
[1] [2] [3] [4]
[1] 1 3 1 7
[ 2] 2 4 6 8
>適用(MA、C(1,2)、和
)[1] [2] [3] [4]
[1] 1 3 1 7
[2,1] 2 4 6 8
>(MA、1、和)適用
[1] 12 20
>(MA、2、和)適用
[1] 3 7 7 15
> tapply(1:17、FAC、和、FALSE =簡略化)
$ '1'
[1] 51
$ '2'
[1] 57
$ '3'
[1] 45
$ `4`
NULLの
$` 5`
NULL
> tapply(1:17、FAC、範囲)
$ '1'
[1] 1 16
$ '2'
[1] 2 17
$ '3'
[1] 3 15
$ `4`
NULL
$` 5`
NULL
2、tapply
(グループ化された統計)
tapply(X-、INDEX、FUN = NULL、...、簡素化= TRUE)
分類指標で楽しい位のX
#例:分類のxの要因、集約操作
FAC < -因子(REP(1 :3 。。、長さ= 4)= 1つのレベル:. 5)
FACの
2. 3. 1. [1]
レベル:2. 1. 5. 4. 3
。tapply(1 :. 4、FAC、SUM)
。1 2 5 4 3
5 3 NA NA 2。
インデックスが要因でない場合#、係数パラメータにas.factor()キャストを使用することができます
追加の例は、ピボットテーブルエクセルの機能を果たします
#TapplyはでExcelにピボットテーブル類似を使用して機能を実現する:
> DA
年販売省
。1 1 2007
2 2007 Bを2
。3 C 2007年3
。4 D 2007年4
5 5 2008。
6 C 2008年6。
2008年7 7 D。
8 2009。 B. 8
。9 2009℃で9
10 2009 D 10
>アタッチ(DA)
> tapply(販売、リスト(年、州))#年、州順序、構成によれば、グループとして売却
[1] 1471028 12です。9. 6. 11
> tapply(販売、リスト(年、省)、平均)
ABCD
2007年4 3 1 2
2008年5. 6. 7 NA
2009 NA。9 10. 8
3、表関数(係数を求めるの発生頻度)
のフォーマットを有する:
表(...、除外=(useNA == "NO")C(NA、のNaN 3)IF、useNA = C( "NO"、
"ifany" 、 "常に")、DNN = list.names(...)、deparse.level = 1)
前記因子が計算されていないかを示す除外する。
サンプルコード:
> D < -因子(REP(C( "A"、 "B"、 "C")、10)、レベル= C( "A"、 "B"、 "C"、 "D"、 " E "))
> Dの
ABCABCABCABCABCABCABC ABCABCABCの[1]
レベル:ABCDE
>表(D、除外=" B「)
D
ACDE
10 10 0 0
4、sapply lapply関数の関数
例えば、このようなX変数需要周期関数として中央値スコア変数Xを求めるように、関数の同じフォームを使用して、データの各列。
lapplyの形式を使用します。
lapply(X、FUN、...)
lapply戻り値であり、Xは、オブジェクトリストの同じ長さを有します
オブジェクトリストの各要素は、機能FUNでは、Xの各要素に適用されます
Xは、リストオブジェクトは、(リストの各要素のためのベクトルである)です、
自動的にオブジェクトタイプリストの他の型に変換関数R as.listによるものです()。
Sapply関数はlapply関数の特別な場合であり、いくつかのパラメータの値は、形式を使用して定義しました:
sapply(X、FUN、...、TRUE =簡素化、USE.NAMES = TRUE)
sapply(*、FALSE = FALSE、USE.NAMES =を簡略化)およびlapply(*)は、戻り値と同じです。
パラメータがTRUE =簡略化する場合は、関数の戻り値は、リストが、マトリックスをsapplyされていません。
簡素化= FALSEの場合、関数sapplyの戻り値は、まだリストです。
X < -リスト(A = 1:10、ベータ= EXP(-3:3)、ロジック= Cの(TRUE、TRUE、FALSE、FALSE))
> lapply(X、分位)は
$
0%25%50%75 %100%
1.00 3.25 5.50 7.75 10.00
$ベータ
0%25%50%75%100%
0.04978707 0.25160736 1.00000000 5.05366896 20.08553692
$論理
0%25%50%75%100%
0.0 0.0 0.5 1.0 1.0
> sapply(X、変位値、簡素化=)use.names = FALSE、FALSE
$
0%25%50%75%100%
1.00 3.25 5.50 7.75 10.00
$ベータを
0%、25%、50%、75%、100%
20.08553692 5.05366896 1.00000000 0.04978707 0.25160736
$論理
0%25%50 %、75%、100%
0.0 0.0 0.5 1.0 1.0
位参数情况的TRUE =簡素化
> sapply(X、変位値)
ベータ・ロジック
0%1.00 0.04978707 0.0
25%3.25 0.25160736 0.0
50%5.50 1.00000000 0.5
75%7.75 5.05366896 1.0
100%10.00 20.08553692 1.0
図5は、機能mapplyの
機能は、修正関数のバージョンsapply mapply mapply関数FUNの順次各パラメータ、第二要素、第三の要素の最初の要素に適用されます。次の形式を使用してMapply機能:
mapply(FUN、...、MoreArgs = NULL、簡素化= TRUE、USE.NAMES = TRUE)
関数FUNのパラメータリストを表しMoreArgsパラメータ。
> Mapply(REP、時間= 1 :. 4、Xが= 4 :. 1)
[1]
[1] 4
[2]
[1]。3. 3
[3]
[1] 2 2 2
[[4 ]
[1] 1つの1 1 1
#担当者の機能は直接の結果:
>担当者(1:4,1 :. 4)
[1] 2 1 2 4 3. 4. 3. 4. 3. 4
6、vapply {ベース} - 関数の変数として進ま
vapply sapply同様の機能が、その戻り値の定義済みタイプ、時には速く、使用する方が安全になるよう。
vapply関数で常に簡略化する、vapply FUNは、すべての値がFUN.VALUEと互換性のある検出します
彼らは同じ長さとタイプを持つように。型配列:論理、整数、実数、複素数
vapply(X、FUN、FUN.VALUE、...、USE.NAMES = TRUE)
Xは、ベクターまたは発現オブジェクトを表し、残りのオブジェクトはas.listてリストを鋳造されます
可能な場合、論理値または文字列を簡略化、ベクトル、行列、または高次元配列の結果として、簡略化されなければなりません。
名前を付ける必要があり、それを省略することができません。デフォルト値は、適切な場合には、ベクトルまたは行列が返され、TRUEです。=「アレイ」簡素化した場合、結果の配列を返します。
USE.NAMES論理値、trueの場合、およびXは、x-名付け、その後、名前が付いていません。
FUN.VALUEユニバーサルベクトル、FUN機能は、価値のテンプレートを返します。
> X <-data.frame(rnormのA =(4,4,4)、B = rnorm(4,5,3)、rnorm C =(4,5,3))
> vapply(X、平均、C( C = 0))
A B C
1.8329043 6.0442858 -0.1437202
> K <-function(X)
+ {
+リスト(平均(X)、SD(X))
+}
> vapply(X、K、C(C = 0))
エラーvapply内の(x、K、C( C = 0)): 1ために必要な長さの値、
しかし長FUN(Xは、[[1]] )結果は2
> vapply(X、K、C(C = 0 、B = 0))
vapplyの誤差(Xは、K、C( = 0 Cは、B = 0)): タイプ要求値が'二重'であり、
しかし、FUNのタイプ(X [1] )の結果であります'リスト'
> vapply(X、K、C(リスト(C = 0、B = 0)))
A B C
C -0.1437202 1.832904 6.044286
B 1.257834 1.940433 3.649194
sapplyとvapply機能の違い:
> I39 < - sapply(3:9、SEQ)
> I39
[1]
[1] 1 2 3
[2]
[1] 1 2 3 4
[3]
[1] 1 2 3 4 5
[4]
[1] 1 2 3 4 5 6
[5]
[1] 1 2 3 4 5 6 7
[[6]
[1] 1 2 3 4 5 6 7 8
[[7]
[1] 1 2 3 4 5 6 7 8 9
> sapply(I39、fivenum)
[1] [2] [3] [4] [5] [6] [7]
[1、 ] 1.0 1.0 1 1.0 1.0 1.0 1
[2] 1.5 1.5 2 2.0 2.5 2.5 3
[3] 2.0 2.5 3 3.5 4.0 4.5
[4] 2.5 3.5 4 5.0 5.5 6.5 7
[5] 3.0 4.0 6.0 7.0 8.0 9
> vapply(I39、fivenum、
+ C(最小= 0、 "1ク。" = 0、中央値= 0、 "第3ク。" = 0、最大= 0))
[1] [2 ] [3] [4] [5] [6] [7]
分1.0 1.0 1.0 1.0 1.0。1. 1
番目Qu-。1.5 1.5 2。3 2.0 2.5 2.5
5の3 5 3.5 2.0 2.5 4.0 4.5中央値
3 Qu- .. 4 5.0 5.5 6.5 2.5 3.5 7
マックス.. 5 3.0 4.0 6.0 7.0 8.0 9
7、eapply {ベース}
FUNによって算出eapply環境という関数値は値のリストを返した後、ユーザは、使用されるすべての名前付きオブジェクトを要求することができます。
eapply(ENV、FUN、...、all.names = FALSE、USE.NAMES = TRUE)
ENV環境を使用します
すべての値に対して機能するかどうかを示す論理値all.names
結果の返されたリストに名前が付けられ含まれているかどうかを示す論理値をUSE.NAMES
>(統計情報)が必要
>
> ENV < -順序が固定されているようnew.env(ハッシュ= FALSE)#を
1:10 - > ENVは、<$
:- >のenv $ベータ<EXP(3 -3)
>のenv $ロジックを< - C(TRUE、FALSE、FALSE、TRUE)
>#何が私たちがありますか?
> utilsの:: ls.str(ENV)
:INT [1時10分] 1 2 3 4 5 6 7 8 9 10
ベータ:NUM [1:7] 0.0498 0.1353 0.3679 2.7183 1 ...
論理:LOGI [1: 4] TRUE FALSE FALSE TRUE
>
>#各リスト要素の平均を計算
> eapply(ENV、平均)
$論理
[1] 0.5
$ベータ
[1] 4.535125
$
[1] 5.5
>非公開に(eapply(ENV、平均、 USE.NAMES =
FALSE))[1] 0.500000 4.535125 5.500000
>
>#中央値と各要素( "..."通過を利用する)ための四分位数:
> eapply(ENV、変位値、ちゃったごめんなさい= 1:3/4)
$ロジック
25%50%75%
0.0 0.5 1.0
$ベータ
25% 50%、75%
0.2516074 1.0000000 5.0536690
$
25%50%75%
3.25 5.50 7.75
> eapply(ENV、変位値)
$論理
0%25%50%75%100%
0.0 0.0 0.5 1.0 1.0
$ベータ
0%25%50% 75%100%
0.04978707 0.25160736 1.00000000 5.05366896 20.08553692
$
0%25%50%75%100%
1.00 3.25 5.50 7.75 10.00
。8、rapply基本{}
rapply lapplyの再帰的バージョンであります
rapply(X、FUN、クラスは= "ANY"、DEFLT = NULL、どのように=のC( "非公開に"、 "置換"、 "リスト")、...)
Xのリスト
文字ベクトルのクラス名、または上のクラスの時にどのような種類のマッチのいずれかの
DEFLTのデフォルトの結果あなたは=「置き換え」どのように使用している場合、あなたは使用できません。
どのように文字列は、次の3つの結果を照合
----------------
この記事は、CSDNブロガー「呉エチルヘキシルのオリジナルの記事で、CC BY-SA 4.0の著作権契約に従って、再版:免責事項元のソースと、この文へのリンクを含めてください。
オリジナルリンクします。https://blog.csdn.net/sinat_26917383/article/details/51086663