行列の各行または列に関数を適用しようとしていますが、行ごとに異なる引数値を渡す必要があります。
lapply や mapply などに精通していると思っていましたが、おそらく十分ではありません。
簡単な例として:
> a<-matrix(1:100,ncol=10);
> a
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 11 21 31 41 51 61 71 81 91
[2,] 2 12 22 32 42 52 62 72 82 92
[3,] 3 13 23 33 43 53 63 73 83 93
[4,] 4 14 24 34 44 54 64 74 84 94
[5,] 5 15 25 35 45 55 65 75 85 95
[6,] 6 16 26 36 46 56 66 76 86 96
[7,] 7 17 27 37 47 57 67 77 87 97
[8,] 8 18 28 38 48 58 68 78 88 98
[9,] 9 19 29 39 49 59 69 79 89 99
[10,] 10 20 30 40 50 60 70 80 90 100
各行に関数を適用したいとしましょう。
apply(a, 1, myFunction);
ただし、私の関数は引数を取るため、次のようになります。
apply(a, 1, myFunction, myArgument);
しかし、引数が行ごとに異なる値を取るようにしたい場合、それを行う正しい方法を見つけることができません。複数の値を持つ 'myArgument' を定義すると、ベクトル全体が明らかに 'myFunction' の各呼び出しに渡されます。
apply と多変量 mapply の間の一種のハイブリッドが必要になると思います。それは理にかなっていますか?
私の目標を達成するための「汚い」方法の1つは、マトリックスを行(または列)で分割し、結果のリストでmapplyを使用して、結果をマトリックスにマージすることです:
do.call(rbind, Map(myFunction, split(a,row(a)), as.list(myArgument)));
スイープ、集計、すべての *apply バリエーションを見てみましたが、私のニーズに完全に一致するものは見つかりませんでした。私はそれを逃しましたか?
ご協力ありがとうございました。