Rのスキャン機能の使い方(例あり)
R のswep()関数を使用すると、行列の行または列に対して特定の操作を実行できます。
この関数は次の基本構文を使用します。
sweep(x, MARGIN, STATS, FUN)
金:
- x : 行列名
- MARGIN : 関数を実行するマージン (1= 行、2= 列)
- STATS : 関数で使用する値
- FUN : 実行する機能
次の例は、R のさまざまなシナリオでswep()関数を使用する方法を示しています。
例 1: swep() を使用して行に対して操作を実行する
次のコードは、 swep()関数を使用して行列の各行の値に特定の数値を追加する方法を示しています。
#define matrix
mat <- matrix(1:15, nrow= 5 )
#view matrix
mast
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 2 7 12
[3,] 3 8 13
[4,] 4 9 14
[5,] 5 10 15
#add specific numbers to each row
sweep(mat, 1 , c(5, 10, 15, 20, 25), " + ")
[,1] [,2] [,3]
[1,] 6 11 16
[2,] 12 17 22
[3,] 18 23 28
[4,] 24 29 34
[5,] 30 35 40
このシナリオでのswep()関数の動作は次のとおりです。
- 最初の行の各値に5が追加されました。
- 2 行目の各値に10が追加されました。
- 3 行目の各値に15 が追加されました。
- 4 行目の各値に20が追加されました。
- 5 行目の各値に25 が追加されました。
この例では、実行する数学演算として加算 (+) を使用しましたが、別の演算を使用することも選択できることに注意してください。
たとえば、次のコードは、各行の値に特定の数値を乗算する方法を示しています。
#define matrix
mat <- matrix(1:15, nrow= 5 )
#view matrix
mast
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 2 7 12
[3,] 3 8 13
[4,] 4 9 14
[5,] 5 10 15
#multiply values in each row by certain amount
sweep(mat, 1 , c(.5, 1, 2, 4, 6), " * ")
[,1] [,2] [,3]
[1,] 0.5 3 5.5
[2,] 2.0 7 12.0
[3,] 6.0 16 26.0
[4,] 16.0 36 56.0
[5,] 30.0 60 90.0
例 2:scanning() を使用して列に対する操作を実行する
次のコードは、 swep()関数を使用して行列の各列の値に特定の数値を追加する方法を示しています。
#define matrix
mat <- matrix(1:15, nrow= 5 )
#view matrix
mast
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 2 7 12
[3,] 3 8 13
[4,] 4 9 14
[5,] 5 10 15
#add specific numbers to each column
sweep(mat, 2 , c(5, 10, 15), " + ")
[,1] [,2] [,3]
[1,] 6 16 26
[2,] 7 17 27
[3,] 8 18 28
[4,] 9 19 29
[5,] 10 20 30
このシナリオでのswep()関数の動作は次のとおりです。
- 最初の列の各値に5が追加されました。
- 2 番目の列の各値に10が追加されました。
- 3 列目の各値に15が追加されました。
追加リソース
次のチュートリアルでは、R で他の一般的な操作を実行する方法について説明します。